2009-11-25 46 views
4

我有一个声明的web表单上的用户控制,如下所示:用户控制没有得到声明属性值

<nnm:DeptDateFilter ID="deptDateFilter" runat="server" AllowAllDepartments="True" /> 

在代码隐藏该控制,AllowAllDepartments声明如下:

internal bool AllowAllDepartments { get; set; } 

然而,当我查看该页面,并设置该控件的Page_Load事件处理程序设置断点,我AllowAllDepartments属性始终为false。这有什么可能的原因?

BREAKING NEWS:当我在控件的Page_Load中打断我的断点时,即使以编程方式设置属性对属性值也没有影响。这里是主机页面的Page_Load:

 deptDateFilter.FilterChanged += deptDateFilter_FilterChanged; 
     if (!IsPostBack) 
     { 
      deptDateFilter.AllowAllDepartments = true; 
      PresentReport(); 
     } 

强大的文本

+0

你有没有想过这一个? – 2010-08-03 19:16:44

回答

2

尝试添加属性值的ViewState的:

protected bool AllowAllDepartments 
{ 
    get 
    { 
     if (ViewState["AllowAllDepartments"] != null) 
     return bool.Parse(ViewState["AllowAllDepartments"]); 
     else 
     return false; 
    } 
    set 
    { 
     ViewState["AllowAllDepartments"] = value; 
    } 
} 

编辑 此外,您可能想要处理该控件的PreRender事件,以查看该控件的属性是否已正确设置。

+0

这可能会起作用,我会尽量作为最后的手段,但我不应该明确地将控件属性添加到视图状态。我甚至不需要它在viewstate中,因为它只对首页加载有影响。 – ProfK 2009-11-25 15:10:20

+0

作为最后的手段为我工作。仍然不知道为什么它不会工作,否则... – 2010-08-03 20:17:36

0

使属性可绑定,如:

[Bindable(true), Category("Appearance"), DefaultValue(false)] 
internal bool AllowAllDepartments { get; set; } 
0

只是出于好奇......如果你不使用get; set;捷径?

private bool _allowAllDepartments; 
public bool AllowAllDepartments 
{ 
    get { return _allowAllDepartments; } 
    set { _allowAllDepartments = value;} 
} 
0

您是否试过将该属性公开?