asp.net - 用户控件未获得声明性属性值

标签 asp.net user-controls

我在 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/

相关文章:

c# - 从自定义用户控件基类派生用户控件

.net - 用户控件数据绑定(bind)的最佳实践 - 如何实现?

c# - Asp.Net Core - 需要从没有依赖注入(inject)生成的实例访问 HttpContext 实例

c# - 帮助我决定是使用 ASP.NET 默认成员资格/角色提供程序还是编写自定义提供程序

asp.net - 如何更改 AjaxControlToolkit HtmlEditorExtender 控件的背景颜色?

c# - 我收到有关使用不同线程的错误消息?

c# - 通过代码在布局控件中添加用户控件

asp.net - SignalR 中消息的最大限制

c# - Razor 语法错误

javascript - Web 的多选控件