我在 Web 表单上有一个用户控件,声明如下:
<nnm:DeptDateFilter ID="deptDateFilter" runat="server" AllowAllDepartments="True" />
在此控件的代码隐藏中,
AllowAllDepartments
声明如下:internal bool AllowAllDepartments { get; set; }
然而,当我查看页面并在控件的
Page_Load
中设置断点时事件处理程序,我的 AllowAllDepartments
属性总是假的。这有哪些可能的原因?突发新闻:当我在控件的 Page_Load 中遇到断点时,即使以编程方式设置属性对属性值也没有影响。这是主机页面的 Page_Load:
deptDateFilter.FilterChanged += deptDateFilter_FilterChanged;
if (!IsPostBack)
{
deptDateFilter.AllowAllDepartments = true;
PresentReport();
}
最佳答案
尝试将属性值添加到 ViewState:
protected bool AllowAllDepartments
{
get
{
if (ViewState["AllowAllDepartments"] != null)
return bool.Parse(ViewState["AllowAllDepartments"]);
else
return false;
}
set
{
ViewState["AllowAllDepartments"] = value;
}
}
编辑
此外,您可能希望处理控件的 PreRender 事件,以查看控件的属性是否已在那里正确设置。
关于asp.net - 用户控件未获得声明性属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1795876/