我在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();
}
答案 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)
您是否尝试将该物业公开?