2010-10-25 4 views
3

J'essaie de créer des pages maîtres imbriquées dans MVC. Dans la page maître principale, j'ai une vue partielle qui est rendue en utilisant Html.RenderPartial. Cela fonctionne très bien lors de l'utilisation de la page maître principale directement dans ma vue. Le problème se produit lorsque j'ai une page maître enfant de la page maître principale. Lorsque vous utilisez la page maître enfant, la méthode RenderPartial ne fonctionne pas. Le code est ci-dessous.MVC Master page et RenderPartial

Est-ce une limitation de RenderPartial?

page maître principal -

<%@ Master Language="VB" Inherits="System.Web.Mvc.ViewMasterPage"%> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml" > 
<head id="Head1" runat="server"> 
    <title></title> 

    <style type="text/css"> 

    html 
    { 
      background-color:gray; 
    } 

    .column 
    { 
      float:left; 
      width:300px; 
      border:solid 1px black; 
      margin-right:10px; 
      padding:5px; 
      background-color:white; 

      min-height:500px; 
    } 

    </style> 

    <asp:ContentPlaceHolder ID="head" runat="server"> 
    </asp:ContentPlaceHolder> 
</head> 
<body> 

    <h1>My Website</h1> 

    <div class="column"> 
      <asp:ContentPlaceHolder ID="Column1Content" runat="server"> 
      </asp:ContentPlaceHolder> 
    </div> 
    <div class="column"> 
      <asp:ContentPlaceHolder ID="Column2Content" runat="server"> 
      <%Html.RenderPartial("TestControl")%> 
      </asp:ContentPlaceHolder> 
    </div> 

</body> 
</html> 

maître Enfant page -

<%@ Master Language="VB" Inherits="System.Web.Mvc.ViewMasterPage" MasterPageFile="~/Views/ViewJob/Parent.Master" %> 
<asp:Content ID="head" ContentPlaceHolderID="head" runat="server"> 
    <asp:ContentPlaceHolder ID="head" runat="server" > 
</asp:ContentPlaceHolder> 
</asp:Content> 

<asp:Content ID="ContentPlaceHolder1" ContentPlaceHolderID="Column1Content" runat="server" > 
    <b>This is from the child master!!!</b> 
    <asp:ContentPlaceHolder ID="Column1Content" runat="server" /> 
</asp:Content> 

<asp:Content ID="ContentPlaceHolder2" ContentPlaceHolderID="Column2Content" runat="server"> 
     <asp:ContentPlaceHolder ID="Column2Content" runat="server" > 
    </asp:ContentPlaceHolder> 
</asp:Content> 
+0

Que voulez-vous dire par 'ne fonctionne pas'? Plus de détails, s'il vous plaît ... –

+0

Le code HTML n'est pas rendu. Il n'y a pas d'erreurs ou quoi que ce soit. Le contrôle n'est pas créé lors de l'utilisation de la page maître enfant. – Quadwwchs

Répondre

3

Vous avez votre RenderPartial dans votre ContentPlaceHolder dans la page principale, et votre page principale de l'enfant est en écrasant que RenderPartial.

Modifier ceci:

<h1>My Website</h1> 

<div class="column"> 
     <asp:ContentPlaceHolder ID="Column1Content" runat="server"> 
     </asp:ContentPlaceHolder> 
</div> 
<div class="column"> 
     <asp:ContentPlaceHolder ID="Column2Content" runat="server"> 
     <%Html.RenderPartial("TestControl")%> 
     </asp:ContentPlaceHolder> 
</div> 

à ceci:

<h1>My Website</h1> 

<div class="column"> 
     <asp:ContentPlaceHolder ID="Column1Content" runat="server"> 
     </asp:ContentPlaceHolder> 
</div> 
<div class="column"> 
     <%Html.RenderPartial("TestControl")%> 
     <asp:ContentPlaceHolder ID="Column2Content" runat="server"> 
     </asp:ContentPlaceHolder> 
</div> 

+0

Merci qui a fonctionné !! – Quadwwchs