Eh bien, je suis un peu déconcerté!Blocs de code intégrés dans masterpage et page
« problème simple »
Je partie de ma page principale que je veux rendre différemment selon si oui ou non un ContentPlaceHolder est vide.
Alors:
J'ai une page principale qui comme un code comme:
<% if (ContentPlaceHolder1.HasControls()) {%>
<div id="LittleDiv">
<% } else { %>
<div id="BigDiv">
<% } %>
some text
</div>
<% if (ContentPlaceHolder1.HasControls()) {%>
<div id="Div1">
yadda yadda yadda
[<asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server"/>]
blah blah blah
</div>
<% } %>
J'ai une page qui a un code le long des lignes de:
<asp:Content ID="Content1" runat="server" contentplaceholderid="ContentPlaceHolder1">
<% if (Model.SomeValue) { %>
hello!
<% } %>
</asp:Content>
(note : la logique dans le bloc de code incorporé de la page d'exemple peut être unique, pour chaque détenteur de contenu, pour chaque page!)
Ce qui semble bien mais ça ne marche pas. Le problème est tel que je le vois (avertissement que je pourrais être complètement faux!). Les blocs de code incorporés sont évalués dans les objets Render. Un peu contre intuitivement la page semble contrôler le maître. Ainsi, le rendu de la page maître est appelé avant le rendu des pages. Cela signifie que la page maître voit toujours le contenu dans le contrôle de contenu de la page.
Y at-il un bon moyen de contourner ce problème? (J'ai un peu une solution mais c'est un bidouillage monstrueux! Je ne le posterai pas car je ne veux pas influencer la pensée.)
Aussi, si quelqu'un pouvait penser à un meilleur titre, je serais reconnaissant! :-) –