【发布时间】:2013-10-09 13:33:28
【问题描述】:
我有一个母版页。
我正在开发一个继承母版页的测试页。
母版页有一个公共属性,可以访问它来打开和关闭可见性。
我有一组可以包含在测试页中的控件。这些控件之一需要能够设置母版页控件的可见性。
通常在后面的页面代码中我只会说;
this.Master.ShowItem = false;
我不知道如何能够从自定义控件访问此属性?
【问题讨论】:
标签: c# asp.net custom-controls
我有一个母版页。
我正在开发一个继承母版页的测试页。
母版页有一个公共属性,可以访问它来打开和关闭可见性。
我有一组可以包含在测试页中的控件。这些控件之一需要能够设置母版页控件的可见性。
通常在后面的页面代码中我只会说;
this.Master.ShowItem = false;
我不知道如何能够从自定义控件访问此属性?
【问题讨论】:
标签: c# asp.net custom-controls
您只需要将 master 转换为正确的类型。假设你的主人的类型是SiteMaster:
var master = this.Page.Master as SiteMaster;
if(master != null) // cast failed, your master is a different type
{
master.ShowItem = false;
}
所以导航是:
【讨论】:
(对不起,由于我的声誉,我无法制作 cmets,因此作为答案)
提示:确保您要在母版页中访问的属性设置为公开。
注意这一点,Tim Schmelter 的解决方案运行良好。
【讨论】:
我不相信您可以直接设置母版页的属性。 但是您可以找到母版页的控件,并使它们在 conternt 页面中可见/不可见,如下所示:
((Label)this.Page.Master.FindControl("IdOfTYurControl")).Visible = false;
【讨论】:
Label 更改为TextBox 左右怎么办?你没有控制权。最重要的是,它不是自我解释的。属性是强类型的,具有编译时安全性、智能感知支持甚至文档。