Asp.net 将数据从子页传递到母版页上的用户控件
我在母版页上有一个用户控件,我想将一个值从子页传递到该用户控件,我如何才能传递这些值 此控件位于母版页中Asp.net 将数据从子页传递到母版页上的用户控件,asp.net,user-controls,master-pages,Asp.net,User Controls,Master Pages,我在母版页上有一个用户控件,我想将一个值从子页传递到该用户控件,我如何才能传递这些值 此控件位于母版页中 <%@ Register TagPrefix="test" TagName="Data" Src="controls/TEST.ascx" %> 子页面中的代码 public partial class sub_page : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e)
<%@ Register TagPrefix="test" TagName="Data" Src="controls/TEST.ascx" %>
子页面中的代码
public partial class sub_page : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Controls_Test m = LoadControl("~/Controls/TEST.ascx");
m.Title = "TEST";
}
}
注意,子页面中的示例代码不起作用,因为它在子页面中找不到该用户控件
我尝试了Page.Master.FindControl,但它对我也不起作用。请提供帮助。使用属性从
页面
与母版页
通信,并使用属性从母版页
与用户控件
通信
要获取母版页中控件的引用,应提供一个返回该控件的公共属性:
例如(在母版页中):
您可以通过以下方式从一个ContentPages调用此属性(例如,如果您的主机类型名为“SiteMaster”):
作为一条经验法则:封装控件越多,代码就越健壮、故障保护、可维护和可扩展
因此,最好只提供对标题的访问,而不是对整个用户控件的访问
在母版页中:
public String Title
{
get
{
return Controls_TEST1.Title;
}
set
{
Controls_TEST1.Title = value;
}
}
((SiteMaster)Page.Master).Title = "TEST";
在内容页面中
:
public String Title
{
get
{
return Controls_TEST1.Title;
}
set
{
Controls_TEST1.Title = value;
}
}
((SiteMaster)Page.Master).Title = "TEST";
通过这种方式,您可以更改
用户控件
和母版页
中的逻辑和控件,而不会在已经直接访问用户控件
的页面中出现问题。使用属性从页面
通信到母版页
,并使用属性通信从母版页
到用户控件
要获取母版页中控件的引用,应提供一个返回该控件的公共属性:
例如(在母版页中):
您可以通过以下方式从一个ContentPages调用此属性(例如,如果您的主机类型名为“SiteMaster”):
作为一条经验法则:封装控件越多,代码就越健壮、故障保护、可维护和可扩展
因此,最好只提供对标题的访问,而不是对整个用户控件的访问
在母版页中:
public String Title
{
get
{
return Controls_TEST1.Title;
}
set
{
Controls_TEST1.Title = value;
}
}
((SiteMaster)Page.Master).Title = "TEST";
在内容页面中
:
public String Title
{
get
{
return Controls_TEST1.Title;
}
set
{
Controls_TEST1.Title = value;
}
}
((SiteMaster)Page.Master).Title = "TEST";
通过这种方式,您可以更改
UserControl
和MasterPage
中的逻辑和控件,而不会在已经直接访问UserControl
的页面中出现问题。完美!非常感谢您提到仅公开值而非控件本身,以便母版页实现可以在不破坏子页面的情况下更改。我使用您的方法随机收到此错误,请提供帮助:无法将类型为“ASP.master\u twocolumn\u searchresults\u master”的对象强制转换为类型为“twocolumn\u searchresults”。@Anna:从何处以及何时获得此异常?什么是twoocolumn\u SearchResults
?@Anna:那么你认为这是微软的Bug?然后只需重新启动IIS(或应用程序池)或编辑web.config即可重新编译所有内容。我看不出这和这个问题有什么关系。您可能想用一个简化的示例问另一个问题。编辑等等,这里已经有一个问题了:另一篇有用的文章。太好了!非常感谢您提到仅公开值而非控件本身,以便母版页实现可以在不破坏子页面的情况下更改。我使用您的方法随机收到此错误,请提供帮助:无法将类型为“ASP.master\u twocolumn\u searchresults\u master”的对象强制转换为类型为“twocolumn\u searchresults”。@Anna:从何处以及何时获得此异常?什么是twoocolumn\u SearchResults
?@Anna:那么你认为这是微软的Bug?然后只需重新启动IIS(或应用程序池)或编辑web.config即可重新编译所有内容。我看不出这和这个问题有什么关系。您可能想用一个简化的示例问另一个问题。编辑等等,这里已经有一个问题了:另一篇有用的文章。