我想略微修改由各种.aspx页面加载的用户控件。
如果我在.aspx.cs页面中设置了bool值
public bool showTemplateBGOption;
public bool TemplateBGOption
{
set { showTemplateBGOption = false; }
}
如何读取在同一.aspx页面上呈现的.ascx控件中的bool值showTemplateBGOption
?
答案 0 :(得分:1)
您可以将Page
属性转换为正确的类型,页面属性需要一个getter。
(在ascx代码隐藏的某处):
MyPageType page = this.Page as MyPageType;
if(page != null)
{
bool templateBGOption = page.TemplateBGOption;
}
但是通过这种方式,您可以使用UserControl
对页面进行硬连接。相反,该页面应指定TemplateBGOption
到UserControl
。
(页面代码隐藏的某处):
this.UserControl1.TemplateBGOption = this.TemplateBGOption;
答案 1 :(得分:1)
您可以将界面添加到将使用此属性的所有页面,然后在用户控件中使用它,这样您就可以将用户控件与特定页面分离,但是您可以将其用于"合同&# 34;
interface ITemplateBOption
{
bool TemplateBGOption{get;set;}
}
Public MyPage : Page, ITemplateBOption
{
public bool TemplateBGOption
{
get{...}
set{...}
}
}
在您的用户控件中使用如下:
ITemplateBOption page = this.Page as ITemplateBOption;
if(page != null)
{
bool templateBGOption = page.TemplateBGOption;
}else
{
//do something, thrown an exception for example.
}