我有一个包含一个属性名称事件类型的母版页.现在我想从内容页面设置此属性,然后该属性值应该可用于另一个内容页面.
这可能与asp.net?如果是,请帮助我.
是的,我的内容页面已经继承了另一个不是主页面的页面.
如果此属性是您添加到母版页的自定义属性,则您必须向MasterType合并该属性的页面添加声明。
<%@ MasterType
virtualpath="~/Path/To/Your.master"
%>
Run Code Online (Sandbox Code Playgroud)
这允许网站或应用程序在编译时知道母版页的特定类型,并允许您像访问控件中的任何其他属性一样访问它。
Page.Master.MyCustomerProperty = someValue;
Run Code Online (Sandbox Code Playgroud)
编辑:作为旁注,在将此属性降低到下一个控件时,最好创建(并引发)一个指示属性已更改的自定义事件。这样,许多控件可以订阅事件并“自我更新”,而不必关心设置属性的时间。
示例:在母版页中,您可以将事件定义为“全局”变量。然后您可以在您的财产中引发此事件。
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());
}
}
Run Code Online (Sandbox Code Playgroud)
然后在您的其他控件中,您可以订阅此事件以了解它何时发生变化:
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;
}
Run Code Online (Sandbox Code Playgroud)
可以在CodeProject上找到此过程的详细分步教程。可以在MSDN上找到一个很好的 C# 自定义事件教程。
| 归档时间: |
|
| 查看次数: |
16159 次 |
| 最近记录: |