如何将用户控件添加到由母版页文件加载的aspx页面中?

时间:2011-07-20 05:48:22

标签: asp.net

我使用母版页来定义default.aspx的页面布局。在母版页中,我包含了ContentPlaceHolder cph。我想从default.aspx访问cph并将ascx文件加载到cph中。我怎样才能做到这一点?我在页面加载事件中尝试了下面的代码,但它不起作用。

     string controlPath = "~/Usercontrols/webusercontrol.ascx";
     UserControl uc = LoadControl(controlPath) as UserControl;
     ContentPlaceHolder cph = (ContentPlaceHolder)this.Master.FindControl("cphMain");
     if ((cph != null) && (uc != null))
     {
          cph.Controls.Add(uc);
     }

2 个答案:

答案 0 :(得分:1)

确保您的Default.aspx在页面标记上有此内容:MasterPageFile =“〜/ MasterPages / Master1.master”

一旦确定,就可以在Default.aspx中使用此标记

<asp:Content ID="Content1" ContentPlaceHolderID="cphMain" Runat="Server">
   ....
</asp:Content>

您可以将用户放在此处,也可以动态添加。除非有必要,否则我建议不要动态加载(动态控件会增加额外的复杂性)

答案 1 :(得分:0)

您可以发布母版页的相关部分吗? Master.FindControl(string)不会在Master页面的任何级别上找到任何控件,只能找到直接位于root页面上的控件,所以如果你的占位符在里面,比如一个Panel,它就不会返回它。

此外,您尚未指定您所看到的错误或行为。