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

标签 c# asp.net

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

这在 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/

相关文章:

c# - 从数据读取器填充对象

c# - 每次关闭表单应用程序时注销 C# WCF

c# - 不破坏 "$ref"引用的 JSON 树修改

asp.net - 数据表的行计算函数

c# - 如何创建自定义日历以在单击按钮时仅显示特定月份,而没有星期六和星期日?

asp.net - 在转发器项目中使用 JQuery 更新/删除数据库记录

c# - 如何删除c#列表中的重复项

c# - 使用复选框禁用 ListView 中的单个复选框

javascript - ASP.Net 中下拉框的数据绑定(bind)

c# - 以编程方式访问样式以获取值