2009-12-15 2 views
2

Sur le base.master:comment ajouter des contrôles à l'espace réservé contenu du programme masterpage

<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Base.master.cs" Inherits="WebApplicationControlTest.Base" %> 
<!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 runat="server"> 
    <title>The title</title> 
    <asp:ContentPlaceHolder ID="head" runat="server"> 
    </asp:ContentPlaceHolder> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
     There is a content here: <br /> 
     <asp:ContentPlaceHolder ID="body" runat="server"> 
     </asp:ContentPlaceHolder> 
    </div> 
    </form> 
</body> 
</html> 

Sur le maître imbriqué

<%@ Master Language="C#" MasterPageFile="~/MasterPages/Base.Master" AutoEventWireup="true" CodeBehind="NestedMasterPageTest2.master.cs" Inherits="WebApplicationControlTest.MasterPages.NestedMasterPageTest2" %> 
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server"> 
</asp:Content> 

<asp:Content ID="PlaceHolder" ContentPlaceHolderID="body" runat="server"> 
    This is inside the NestedPage<br /> 
    <asp:ContentPlaceHolder ID="PlaceHolderLeft" runat="server"> 
    </asp:ContentPlaceHolder> 
    <asp:ContentPlaceHolder ID="PlaceHolderRight" runat="server"> 
    </asp:ContentPlaceHolder> 
</asp:Content> 

et sur le default.aspx

<asp:Content ID="PlaceHolder" ContentPlaceHolderID="PlaceHolderLeft" runat="server"> 
    This is a test! 
</asp:Content> 

sur le default.aspx.cs

protected override void OnPreInit(EventArgs e){ 
    Control control = LoadControl("TheUrlOfTheControl.ascx"); 
    if (Page.Master.FindControl("body") != null) { 
     Page.Master.FindControl("body").Controls.Add(control); 
    } 
} 

Je dois ajouter le contrôle à la dernière partie du contenu du corps Espace réservé mais FindControl renvoie null ... comment pouvons-nous ajouter des contrôles à l'espace réservé content de la page maître par programmation?

Merci

Répondre

7

répondues pour référence future

protected override void OnPreInit(EventArgs e){ 
    Control control = LoadControl("TheUrlOfTheControl.ascx"); 
    Control placeHolderControl = Page.FindControl("body"); 
    if (placeHolderControl != null) { 
     placeHolderControl.Controls.Add(control); 
    } else { 
     MasterPage theMaster = Page.Master; 
     while (theMaster != null) { 
      placeHolderControl = theMaster.FindControl("body"); 
      if (placeHolderControl != null) { 
       placeHolderControl.Controls.Add(control); 
       break; 
      } 
      theMaster = theMaster.Master; 
     } 
    } 
} 
+0

Merci, c'est un travail pour moi. mais j'ai mis ce code sur l'événement de chargement de la page maître y a-t-il une différence sur le chargement de la page et la charge de la page maître? – sharad

+0

Comment la méthode "LoadControl" fonctionne dans le code? Est-il nécessaire d'ajouter une référence pour utiliser cette méthode? –

Questions connexes