C# 如何从内容页访问母版页中的用户控件?

C# 如何从内容页访问母版页中的用户控件?,c#,asp.net,user-controls,master-pages,C#,Asp.net,User Controls,Master Pages,假设母版页中有一个页眉用户控件,并且希望根据母版页中加载的内容页更改用户控件的属性。我该怎么办 谢谢 您可以使用两种方法。第一种方法是使用Page.Master.FindControl('controlID')。然后可以将其强制转换为用户控件的类型。第二种方法是将或标记添加到您的aspx页面。在VirtualPath中,将虚拟路径添加到母版页,或在TypeName中添加类。然后,您可以使用intellisense访问所有内容。还有一种方法,那就是在母版页上创建一个公开用户控件的公共属性。使用公共

假设母版页中有一个页眉用户控件,并且希望根据母版页中加载的内容页更改用户控件的属性。我该怎么办


谢谢

您可以使用两种方法。第一种方法是使用
Page.Master.FindControl('controlID')
。然后可以将其强制转换为用户控件的类型。第二种方法是将
标记添加到您的aspx页面。在
VirtualPath
中,将虚拟路径添加到母版页,或在
TypeName
中添加类。然后,您可以使用intellisense访问所有内容。

还有一种方法,那就是在母版页上创建一个公开用户控件的公共属性。

使用公共属性也可以。在内容页的FormLoad方法中,可以执行以下操作(VB):


首先在母版页中找到用户控件,如下所示。然后找到访问其属性所需的控件

UserControl uch = Page.Master.FindControl("ucHeader1") as UserControl;
PlaceHolder phProxylist= ucHeader1.FindControl("phProxy") as PlaceHolder;
DropDownList ddlproxylist1 = ucHeader1.FindControl("ddlProxyList") as DropDownList;
phProxylist.Visible = false;

希望这有帮助。

使用代码隐藏文件不是最佳做法。这里是试图摆脱他们在所有怎么不是一个最佳做法?您混淆了ASP.NET webforms和ASP.NET MVC。这个答案非常合适。MasterType指令应该使用VirtualPath或TypeName,但不能同时使用两者。@Mike是正确的,我编辑了答案以反映他的评论。
UserControl uch = Page.Master.FindControl("ucHeader1") as UserControl;
PlaceHolder phProxylist= ucHeader1.FindControl("phProxy") as PlaceHolder;
DropDownList ddlproxylist1 = ucHeader1.FindControl("ddlProxyList") as DropDownList;
phProxylist.Visible = false;