如何在C#代码中设置公共bool值,读入.ascx用户控件?

时间:2015-06-15 15:43:35

标签: c# .net

我想略微修改由各种.aspx页面加载的用户控件。

如果我在.aspx.cs页面中设置了bool值

public bool showTemplateBGOption;

public bool TemplateBGOption
{
    set { showTemplateBGOption = false; }
}

如何读取在同一.aspx页面上呈现的.ascx控件中的bool值showTemplateBGOption

2 个答案:

答案 0 :(得分:1)

您可以将Page属性转换为正确的类型,页面属性需要一个getter。

(在ascx代码隐藏的某处):

MyPageType page = this.Page as MyPageType;
if(page != null)
{
    bool templateBGOption = page.TemplateBGOption;
}

但是通过这种方式,您可以使用UserControl对页面进行硬连接。相反,该页面应指定TemplateBGOptionUserControl

(页面代码隐藏的某处):

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.
}