Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Contenuto che varia a seconda della pagina

    ciao!
    in un div ho un contenuto che varia a seconda della pagina in cui mi trovo (Default.aspx, Other.aspx).
    come mi consigliate di strutturare la cosa??
    il div è contenuto nella master perchè sta subito sotto al menu.
    ha la stessa identica struttura, ma ciò che devo scriverci dentro è diverso.....

  2. #2
    Utente di HTML.it L'avatar di rsdpzed
    Registrato dal
    Aug 2001
    Messaggi
    764
    hai due possibilità

    - Non sei limitato ad un solo contentplaceholder. metti un altro contentPlaceHolder in corrispondenza del div (o del suo contenuto) nella master page e in ogni pagina ridefinisci il contenuto nel relativo controllo content. Questa opzione va bene se la modifica è sostanziale tra una pagina e l'altra.

    - se invece il div ha una struttura visiva complessa e a cambiare sono solo alcuni contenuti (penso ad un form complesso dove a cambiare sono solo le etichette), è meglio (per una questione di mantinence) lasciare quella struttura in un solo posto nella master page. Sempre nella master page in corrispondenza dei contenuti dinamici mettici dei controlli asp.net lato server. Nelle singole pagine non devi far altro che referenziare questi controlli e modificarne il contenuto in base alla pagina. Per referenziare un controllo dichiarato nella master page dalla child page basta usare da codice la proprietà Master e la funzione FindControl.

  3. #3
    Utente di HTML.it L'avatar di rsdpzed
    Registrato dal
    Aug 2001
    Messaggi
    764
    per la seconda possibilità ti faccio vedere due metodi, quello del findcontrol e uno un po piu OOP e che preferisco.

    nel div della master page ho due label, le popolo entrambe dalla pagina child, la prima usando findcontrol mentre la seconda la bindo ad una proprietà definita a livello di classe nella pagina master.

    MASTER PAGE
    codice:
    <body>
        <form id="form1" runat="server">
        <div>
        <div id="div_dinamico">
            <h3>Contenuto Master Page</h3>
            <asp:Label ID="Label1" runat="server" Text=""></asp:Label>
    
            <asp:Label ID="Label2" runat="server" Text=""></asp:Label>
        </div>
            <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
            
            </asp:ContentPlaceHolder>
        </div>
        </form>
    </body>
    CODICE MASTER PAGE
    codice:
    public partial class Site1 : System.Web.UI.MasterPage
        {
            public string Testo2 { get; set; }
    
            protected void Page_Load(object sender, EventArgs e)
            {
                Label2.Text = Testo2;
            }
        }
    CHILD PAGE
    codice:
    <asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
        <h3>Child Page</h3>
    </asp:Content>
    CODICE CHILD PAGE
    codice:
    public partial class WebForm1 : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                Label label1 = Master.FindControl("Label1") as Label;
                if (label1 != null)
                    label1.Text = "Testo 1 da Child Page";
    
                (Master as Site1).Testo2 = "TESTO 2 da Child page"; //necessario il cast a tipo della classe derivata (il nome della masterpage) !
            }
        }

  4. #4
    intanto grazie per l'ottima risposta!!
    allora, io ho solo HTML con vari div, liste e paragrafi.
    nn ho controlli server la dentro.
    la struttura rimane sempre la stessa, cambiano le immagini e il testo.
    forse mi conviene usare un altro ContentPlaceHolder.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.