2010-08-19 2 views
5

ho una serie di pagine master nidificate, in questo modo:ASP.NET MVC pagine master nidificate, erediteranno contenuti

Site.master:

<asp:ContentPlaceHolder ID="SearchFormContent" runat="server"> 
<%Html.RenderPartial("SearchFormControl"); %> 
</asp:ContentPlaceHolder> 

nella (bambino) pagina master nidificate, zona .master

<asp:Content ContentPlaceHolderID="SearchFormContent" ID="SearchFormContentContainer" runat="server"> 
<asp:ContentPlaceHolderID="SearchFormContent" runat="server"/> 
</asp:ContentPlaceHolder> 

Ho due pagine di contenuto separate. Si vuole aggiungere il proprio contenuto a SearchFormContent, l'altro vorrebbe mantenere il contenuto che è stato definito nella pagina principale di livello superiore. Naturalmente, poiché la pagina principale figlio definisce il contenuto del blocco SearchFormContent in modo che le pagine figlio possano potenzialmente accedervi, il contenuto definito nella pagina principale di livello superiore viene cancellato.

Un modo per farlo?

+0

sto lottando per trovare una soluzione a questo stesso problema pure. nell'anno o giù di lì da quando hai chiesto, hai mai trovato un modo conveniente per farlo? – Funka

+0

Non proprio. La soluzione segnaposto annidata funziona bene, anche se ovviamente è brutta. Mi sono sinceramente spostato sul motore di visualizzazione Razor, che ha un sistema molto più bello per il rendering facoltativo delle sezioni di pagina, la sostituzione dei contenuti solo quando si desidera, ecc. –

risposta

1

non riesco a pensare a un modo diverso da quello avente la seguente nel tuo padrone pagina figlio

<asp:Content ContentPlaceHolderID="SearchFormContent" ID="SearchFormContentContainer" runat="server"> 
    <asp:ContentPlaceHolder ID="SearchFormContent" runat="server"> 
     <%Html.RenderPartial("SearchFormControl"); %> 
    </asp:ContentPlaceHolder> 
</asp:ContentPlaceHolder> 

Nasty I lo so, ma è l'unico modo in cui riesco a pensare quando uso le pagine master.

HTHS,
Charles

+0

Mi dispiacerebbe dover duplicare tutto questo dappertutto. Stiamo parlando di alcune pagine. –

+0

Un bel po 'di pagine principali intendi? Perché devi solo farlo nelle pagine mastro (bambino). – Charlino

+0

Due anni e una completa redisegnazione e migrazione a Sitefinity in un secondo momento, hanno quindi un senso. –

1

Rimuovi tutti i tuoi ContentPlaceHolder e lascia il SearchFormControl direttamente sul sito. Se non si vuole ignorare il SearchFormControl allora non è necessario definire il ControlPlaceHolder s

+0

Il problema è che DEVO sostituire il contenuto SearchFormControl. È reso in modo diverso in alcune diverse aree del sito, ma alcune aree devono utilizzare il contenuto predefinito dalla pagina principale del sito di livello superiore. –

+1

@David Lively - In base ai tuoi due commenti sembra che tu voglia la tua torta e anche a mangiarla. – jfar

1

si può mettere il contenuto nella ContentPlaceHolder sul masterpage. che verrà visualizzato di default se non si esegue l'override con un contenuto in una pagina figlio.

+0

Quando aggiungo un nuovo "Web Form usando la Pagina Master", il progettista sovrascriverà tutti i segnaposti trovati nella pagina principale. C'è un modo per dire di non scavalcare uno di loro? – Adi