我使用母版页来定义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);
}
答案 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,它就不会返回它。
此外,您尚未指定您所看到的错误或行为。