Newsgroup: it.comp.www.asp
Titolo: Siti ASP con  Include

Ciao a tutti,
vorrei passare dalla costruzione di siti a frame (vecchio stile) a una nuova
struttura realizzata utilizzando gli include di ASP.
Diciamo che la parte pratica, no comporta grossi problemi, e' sufficiente
realizzare una pagina e inserirci dentro gli Include file al posto
giusto....
Ma ho due dubbi.
1) come faccio a far aprire,. o meglio ri-caricare la struttura di base,
opportunamente modificata con le nuove pagine (o immagini o altro) quando
clicco su una voce di un ipotettico menu'?
2) all'apertura del sito, quando vado a leggere la classica index.asp, come
faccio a dirgli che deve caricare una particolare combinazione di pagine?
devo fare uno script è chiaro, ma se faccio una pagina contenente solo lo
script, e la gestisco con Runat=server, ottengo lo stesso effetto che ho
caricando una pagina html normale?
Avete voglia di fare un po di chiarezza?
Se preferite, vanno bene anche link a siti che trattano l'argomento, dato
che le mie ricerche non sono state molto profique....
Un grazie e un saluto
Emanuele

Considera che gli include vengono letti prina che il codice ASP venga
interpretato.
Quindi non è possibile qualcosa tipo:
<% If ... Then Response.Write "<include...>"  .. %>
Potresti fare:
<% If ... Then %>
    <include...>
<% Else %>
    <include.. >
<% End If %>
Tenendo però presente che la pagina asp da interpretare li conterrà entrambi
quindi sarà più "onerosa".
O te la giochi con delle sub e funzioni (o classi) all'interno del file
<include >
Quindi ad esempio
<include ..inc_functions.asp ..>
<% Call DrawPage(1) %>
Dove il file di inclusione contiene la sub DrawPage()
Oppure puoi dare un'occhiata al metodo Server.Execute però non posso dirti
molto riguardo ad un eventuale decadimento delle prestazioni, tenendo
presente che a quanto mi ricordo (eventualmente qualcuno smentisca) i file
di inclusione dopo la prima lettura vengono mantenuti in cache sul server
per ottimizzare l'accesso.
-- 
:: Massimiliano Mattei :: Project Leader
:: EVA Group :: 
http://www.evagroup.net
:: Commercio elettronico :: Soluzioni extranet :: Corporate portal


Quello che gentilemnte mi suggerisci, mi pare sia la gestione delle pagine
durante la navigazione nel sito...ma la prima pagina, puo essere aperta
usando uno script lato server?
Perchè anch ela prima pagina deve essere costruita....e contenere tutte le
componenti che poi vado a replicare nelle successive....
Penso che il problema iniziale sia proprio questo.
Cosa suggerisci? Una pagina normale che al primo click su una voce di menu
porta a una funzione che ricostruisce la pagina ad arte, o un script lato
server che fa gia dall'inizio questa operazione e che poi richiamo ogni
volta che devo ricostruire la pagina?
Grazie
Emanuele

[cut]
in base alla tua spiegazione, butto giu' un'idea....
se creo un file esterno tipo testo (.txt) dove memorizzo tutti i nomi delle
pagine che conmpongono il mio sito, poi creo una funzione che in base alla
voce di menu passatagli, mi legge da detto file di testo i nominativi delle
pagine, poi posso passarli all'include?
Es
pippo.txt contiene
1:primapagina.html
2:secondapagina.asp
3:terza pagina.asp
la voce di menu
<a href="#" onclick ="costruiscipagina(numvocerichiesta);"> prima </a>
miafunzione e' cosi
miafunzione(vParam)
if vParam > 0  then
   valorerichiesto = <leggo il file di testo cercando il valore passato (per
esempio 1 che corrisponde a primapagina.html )>
end if
   miafunzione = valorerichiesto
end function
nella pagina predisposta alla costruzione della pagina
ò..............
...................
<!--#include file="miafunzione(parametropassato)" -->
troppo da svitati, o passibile?
Grazie
Emanuele

Non potresti anche perchè ASP opera lato server quindi un avolta che tu sei
in grado di cliccare da qualche parte significa che la pagina è già stata
interpreta e restituita. L'unico modo sarebbe ricaricare di nuovo la pagina
con l'evento onclick, passando un parametro nella querystring.
Sinceramente non è che capisco benissimo dove vuoi arrivare, cmq ipotizzo
che tu devi ragionare al contrario... mi spiego:
Piuttosto che avere una sola home page dove all'interno cambiano i contenuti
in base alla navigazione, realizza più pagine di contenuti includendo
l'interfaccia e la navigazione semmai.
Es:
default.asp
<include.. intestazione
<include ... menu
<include... funzioni
Contenuti specifici
<include chiusura
news.asp
<include.. intestazione
<include ... menu
<include... funzioni
Contenuti specifici
<include chiusura
Ecc.


 mantenuti in cache sul server per ottimizzare l'accesso.
In questi casi il server.Execute ha maggiori prestazioni visto che in caso
di condizione se una pagina non serve non viene inclusa. Anzi, è quasi da
evitare l'include classico in asp per le scarse prestazioni che comporta in
caso di molti include.
Ciao
-- 
AZ [Microsoft - .NET MVP]
Mia Home page: 
http://ciclismo.sitiasp.it
Asp.Net community: 
http://www.aspitalia.com
Il mio blog: 
http://blogs.aspitalia.com/az

 Es:
[cut]
Potresti fare una default.asp singola che cambi i contenuti delle pagine in
base ad una QueryString.
Es.
default.asp
<!--#include virtual="./inc/intestazione.asp"-->
<|--#include virtual="./inc/menu.asp"-->
....
<% if (Request.QueryString("action")=="prima"){ %>
<!--inclde virtual="./prima.asp"-->
<%}else
       if (Request.QueryString("action")=="seconda"){%>
<!--include virtual="./seconda.asp"-->
<%}else{%>
<!--#include virtual="./principale.asp"-->
<%}%>
.....
<!--#include virtual="./inc/pagina.asp"-->
menu.asp
<a href="default.asp?action=prima"> Prima Pagina </a><br>
<a href="default.asp?action=seconda"> Seconda Pagina</a><br>
....
è lo stesso sistema col quale sto piano piano rifacendo il mio sito...
www.andrex.it
 , anzi... se ci fate un salto e mi date un parere mi fa
piacere. Ancora non c'è nulla ma tutto quello che sta sul vecchio sito verrà
riadattato e spostato sul nuovo.
ciao ciao
Andrea

Io vorrei arrivare a capire, come vengono costruiti i siti (tipo Virgilio
per esempio) dove pare che la pagina sia unica (difatti la barra di
scorrimento e posta a destra ed è a tutta lunghezza del browser) ma in
realta, alcune parti non cambiano mai, il che mi da da pensare che nessuno e
cosi stordito da fare decine di pagine tutte uguali con un sacco
dicomponenti identici....per questo pensavo agli include lato server,
ipotizzando che vi sia una funzione che genera le pagine exnovo ogni volta
che vengono chiamate.....
O forse ho sbagliato qualcosa?
Grazie
Emanuele


Però con il metodo execute le pagine vengono caricate ogni volta invece
utilizzando include (ovviamente non abbinato a controlli condizionali)
queste vengono lette la prima volta e mantenute in cache.
Sicuramente il metodo Execute è più flessibile, potendo cambiare
dinamicamente il file da eseguire.


 dicomponenti identici
Come ti dicevo i file che "includi" dopo la prima volta vengono mantenuti in
cache sul server e questa è una classica progettazione per template, niente
di così imbarazzante :)


 dinamicamente il file da eseguire.
Anche minori risorse richieste in caso di molti file include.


Infatti avevo premesso: "..ovviamente non abbinato a controlli
condizionali..."
La dove quindi i file siano COMUNQUE tutti necessari e non sottoposti a
condizioni (IF... SELECT CASE..), come nel caso di una progettazione con
templates,  probabilmetne č piů performante
<include.. header
<include... menu
Piuttosto  che:
Server.Execute("header.asp")
Server.Execute("menu.asp")


 Server.Execute("menu.asp")
Sě, in caso di include non ho nulla contro, ma in caso di condizioni non
transigo! ;)


 ....
[cut]
č lo stesso che pensavo io, ma da quello che ho letto sugli altri post,
questa soluzione č piuttosto gravosa per il server e per le pagine....io
pensavo di fare una pagina iniziale con uno script Runat=Server (ho provato
e in locale funziona) che mi apre una pgina base, dalla quale poi , nel menu
incluso (come fai tu) vado a richiamare tale funzione e in base a un
parametro che cambia di volta in volta, carico la sequenza di pagine che mi
serve...cosa ne dici o dite?
Andro sicuramente a vedere il tuo sito, perchč voglio farmi un' idea di
questa tecnica, che sicuramente si distingue molto dalla classica pagina a
frame...
Grazie a tutti.
Emanuele