从内容页面设置母版页的属性,并从asp.net中的另一个内容页面获取该属性值

Dar*_*han 5 c# asp.net

我有一个包含一个属性名称事件类型的母版页.现在我想从内容页面设置此属性,然后该属性值应该可用于另一个内容页面.

这可能与asp.net?如果是,请帮助我.

是的,我的内容页面已经继承了另一个不是主页面的页面.

Joe*_*ton 5

如果此属性是您添加到母版页的自定义属性,则您必须向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# 自定义事件教程。