我有一个包含一个属性名称事件类型的母版页。现在我想从内容页面设置此属性,然后该属性值应该可用于另一个内容页面。
这在 asp.net 中可行吗?如果是,请帮助我。
是的,我的内容页面已经继承了另一个非主页面。
最佳答案
如果此属性是您添加到母版页的自定义属性,则您必须将 MasterType
声明添加到包含它的页面。
<%@ MasterType
virtualpath="~/Path/To/Your.master"
%>
这允许网站或应用程序在编译时知道母版页的特定类型,并允许您像访问控件中的任何其他属性一样访问它。
Page.Master.MyCustomerProperty = someValue;
编辑:作为旁注,在将此属性下放到您的下一个控件时,最好创建(并引发)一个自定义事件来指示该属性已更改。通过这种方式,许多控件可以订阅事件并“ self 更新”,而不必关心属性设置的时间。
示例:在您的母版页中,您可以将事件定义为“全局”变量。然后在你的属性(property)中你可以引发这个事件。
public event EventHandler myPropertyChanged;
public delegate void MyPropertyChanged(object sender, EventArgs e);
//...
public string MyProperty
{
get
{
return _myProperty;
}
set
{
_myProperty = value;
if (myPropertyChanged != null)
myPropertyChanged(this, new EventArgs());
}
}
然后在你的其他控件中,你可以订阅这个事件来知道它什么时候发生变化:
protected void Page_Load(object sender, EventArgs e)
{
Page.Master.MyPropertyChanged += new EventHandler(MasterPropertyChanged);
}
protected void MasterPropertyChanged(object sender, EventArgs e)
//Rememeber you need the VirtualType in order for this event to be recognized
SomeLocalValue = Page.Master.MyProperty;
}
可以在 CodeProject 上找到有关此过程的详分割步教程。 .可以在 MSDN 上找到一个很好的 c# 自定义事件教程。 .
关于c# - 从内容页设置母版页的属性并从 asp.net 中的另一个内容页获取该属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15431733/