2010-08-19 4 views
5

J'ai une série de pages maîtres imbriqués, comme ceci:ASP.NET MVC pages maîtres imbriquées, hériteront contenu

Site.master:

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

dans la page maître imbriquée (enfant), zone .master

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

J'ai deux pages de contenu distinctes. L'un souhaite ajouter son propre contenu à SearchFormContent, l'autre souhaite conserver le contenu défini dans la page maître de niveau supérieur. Bien sûr, puisque la page maître enfant définit le contenu du bloc SearchFormContent afin que les pages enfants puissent potentiellement y accéder, le contenu défini dans la page maître de niveau supérieur est effacé.

Un moyen de le faire?

+0

J'ai du mal à trouver une solution à ce même problème. depuis environ un an, depuis que vous avez demandé, avez-vous déjà trouvé un moyen pratique de le faire? – Funka

+0

Pas vraiment. La solution d'espace réservé imbriqué fonctionne bien, bien qu'elle soit évidemment moche. Je suis passé au moteur de vue Razor, qui a un système beaucoup plus agréable pour le rendu optionnel des sections de page, en remplaçant le contenu seulement quand vous voulez, etc. –

Répondre

1

Je ne peux pas penser à une autre manière que d'avoir les éléments suivants dans votre page maître enfant

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

Nasty I savoir, mais c'est la seule façon dont je peux penser lors de l'utilisation des pages maîtres.

HTHS,
Charles

+0

Je détesterais avoir à reproduire cela partout. Nous parlons de plusieurs pages. –

+0

Vous voulez dire quelques pages maîtresses? Parce que vous n'avez qu'à le faire dans les pages maîtres (enfants). – Charlino

+0

Deux ans et une redésignation complète et la migration vers Sitefinity plus tard, donc effectivement fait sens. –

1

Supprimez tous vos ContentPlaceHolder s et laissez le SearchFormControl directement sur le site.master. Si vous ne voulez jamais remplacer le SearchFormControl alors vous n'avez pas besoin de définir le ControlPlaceHolder s

+0

Le problème est que je ne veux pas remplacer le contenu SearchFormControl. Il est rendu différemment dans quelques zones différentes du site, mais certaines zones doivent utiliser le contenu par défaut de la page principale du site de niveau supérieur. –

+1

@David Lively - Basé sur vos deux commentaires, il semble que vous voulez votre gâteau et le manger aussi. – jfar

1

vous pouvez mettre du contenu dans le ContentPlaceHolder sur le masterpage. Cela sera rendu par défaut si vous ne surchargez pas avec un contenu sur une page enfant.

+0

Lorsque j'ajoute un nouveau "Formulaire Web en utilisant la page maquette", le concepteur remplacera tous les espaces réservés trouvés dans la page maître. Y a-t-il un moyen de dire de ne pas surcharger l'un d'entre eux? – Adi

Questions connexes