用户控件未获取声明属性值

时间:2009-11-25 10:02:24

标签: asp.net user-controls

我在Web表单上有一个用户控件,声明如下:

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

在此控件的代码隐藏中,AllowAllDepartments声明如下:

internal bool AllowAllDepartments { get; set; }

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

突发新闻:当我在控件的Page_Load中点击断点时,以编程方式设置属性对属性值没有影响。这是主页的Page_Load:

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

4 个答案:

答案 0 :(得分:2)

尝试将属性值添加到ViewState:

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

修改 此外,您可能希望处理控件的PreRender事件,以查看控件的属性是否已在此处正确设置。

答案 1 :(得分:0)

使属性可绑定,如:

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

答案 2 :(得分:0)

只是出于好奇......如果你不使用get; set;它是否正常工作?快捷键?

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

答案 3 :(得分:0)

您是否尝试将该物业公开?