Ciao a tutti,
sto sviluppando il mio primo sito ASPX e vorrei utilizzare le master page per dare in modo semplice e veloce uno stile unitario a tutto il sito.

Ho strutturato la Master Page generale e sembra tutto ok, ora mi trovo a dover affrontare un problema che non so proprio come affrontare.

Il problema è il seguente: visto che il mio sito ha delle aree protette, vorrei visualizzare menu differenti a seconda della pagina che l'utente visualizza e a seconda se l'utente è un utente conosciuto o sconosciuto.

La pagina è la classica
Header, Menu (sinistra), Contenuto pagina (centro), Footer

Come posso fare per risolvere il mio problema?
Grazie a chiunque mi aiuterà.

Dr. Panetta Luca Jonathan
Pisa (Italy)
http://www.pljsoftware.com
http://pljluca.blogspot.com
http://www.perledellojonio.it
Usa nella masterpage una LoginView che ti permette di differenziare i layout a seconda che l'utente sia autentificato o meno definendo AnonymousTemplate o LoggedInTemplate

Ciao

Il mio blog
Homepage
Ciao,
ho provato ad usare il LoginView nella master page ma non visualizza nulla.

Il mio codice è il seguente:
<div id="menu">
    <div id="voci">
        <ul> 
            <b><asp:LoginView ID="LoginView1" runat="server"></b>
                        
                <b><AnonymousTemplate></b>
                    <asp:contentplaceholder id="MenuAnonimi" runat="server"></asp:contentplaceholder>
                <b></AnonymousTemplate></b>
                        
                <b><LoggedInTemplate></b>
                    <asp:contentplaceholder id="MenuMembri" runat="server"></asp:contentplaceholder>
                <b></LoggedInTemplate></b>
                        
            <b></asp:LoginView></b>
        </ul>
    </div>
</div>


Credo sia scontato ma lo dico lo stesso, i 2 ContentPlaceHolder contengono una serie di tag html di tipo
<li>
   <a href="..."></a>
</li>


Ho creato i 2 ContentPlaceHolder necessari a riempire lo spazio riservato nella master page ma non so per quale motivo non mi viene visualizzato nulla quando eseguo l'applicazione.

La cosa che mi lascia stupito è che ho anche il ContenPlaceHolder per il conenuto centrale della pagina e quello viene visualizzato correttamente.

Come posso risolvere il problema? Mi spiegate come funzionano questi nuovi controlli? Sto cercando materiale in rete ma non trovo molto, tutti presentano gli stessi esempi.

Grazie per l'aiuto.

Dr. Panetta Luca Jonathan
Pisa (Italy)
http://www.pljsoftware.com
http://pljluca.blogspot.com
http://www.perledellojonio.it
49 messaggi dal 07 giugno 2004
Io, per fare un menu personalizzato, ti consiglio di controllare ovviamente se l'utente è loggato.
Se non lo è gli fai apparire il menu di default, altrimenti gli aggiungi le voci personalizzate.
Poi se vuoi far vedere un menu a seconda del ruolo dell'utente, là devi utilizzare un MembershipProvider per i ruoli e a seconda del ruolo fai apparire le voci corrispondenti
Ma scusa, perché metti un contentplaceholder, metti addirittura il menu.
Non puoi usarli lì perché le master pages agiscono in preinit mentre i template sono inizializzati dopo

Ciao

Il mio blog
Homepage
Ciao Cristian,
io uso il ContentPlaceholder perché nelle master pages serve per riservare le aree, come ho letto nei vari articoli trovati in giro per la rete.
Inoltre faccio notare, cito le mie stesse parole del precedente post

"Ho creato i 2 ContentPlaceHolder necessari a riempire lo spazio riservato nella master page ma non so per quale motivo non mi viene visualizzato nulla quando eseguo l'applicazione.

La cosa che mi lascia stupito è che ho anche il ContenPlaceHolder per il conenuto centrale della pagina e quello viene visualizzato correttamente."

Ora visto che il codice all'interno dei ContentPlaceholder relativi al menu è del puro e semplice HTML, come lo è per il CORPO CENTRALE della pagina, come mai non mi viene scritto in output da ASP.Net 2.0?

Allo stato attuale delle cose io non ho scritto neanche una riga di codice ma solo HTML.

Faccio notare ancora che: ho provato ad eliminare il controllo LoginView e a lasciare solo un ContentPlaceholder e anche in questo caso non viene visualizzato nulla. Può essere un problema di path? Se si, come faccio a controllare i vari percorsi che ASP.Net sua per prendere le pagine da me segnalate per riempire il ContentPlaceholder?

Grazie a tutti per l'aiuto.

Dr. Panetta Luca Jonathan
Pisa (Italy)
http://www.pljsoftware.com
http://pljluca.blogspot.com
http://www.perledellojonio.it
Buona alba a tutti,
sono quasi le 4.00 del mattino ed io sto qui a spippolare allegramente nel tentativo di risolvere il problema.
Passo subito alle cose serie.

Forse ho quasi risolto il problema. Ho effettuato una prova ed ho notato che se metto i vari content richiesti nella Master Page tutti in una sola pagina esempio index.aspx, mi viene visualizzato anche il menu.

Io ho le mie pagine disposte in questo modo:

/templates/MP_General.master
/templates/MenuAnonimi.aspx (contengono HTML da mostrare)
/templates/MenuMembri.aspx (contengono HTML da mostrare)
/index.aspx

Come detto in precedenza la pagina Master ha 3 Content Placeholder che riservano un'area per del codice HTML da inserire automaticamente.

Il mio problema adesso è dato dal fatto che non vorrei replicare il menu in ogni pagina scrivendo i 3 Content richiesti dalla Master Page, ma vorrei usare i file MenuAnonimi.aspx e MenuMembri.aspx (quest'ultimo più in avanti generato dinamicamente tramite codice C#).

Come posso dire alla pagina index.aspx che per i content MenuAnonimi e MenuMembri deve fare riferimento alle pagine MenuAnonimi.aspx e MenuMembri.aspx? C'è qualche sistema per indicare esplicitamente i path da usare per le varie parti della pagina?

Grazie a tutti per l'aiuto che mi darete. Non so come farei senza questa grandiosa comunità...

Dr. Panetta Luca Jonathan
Pisa (Italy)
http://www.pljsoftware.com
http://pljluca.blogspot.com
http://www.perledellojonio.it

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.