现在的位置: 首页 > 综合 > 正文

[经验]自定义ASP.NET服务器控件属性的状态不能保存的问题

2011年01月01日 ⁄ 综合 ⁄ 共 541字 ⁄ 字号 评论关闭

每个 Web 窗体控件都有一个 ViewState 属性(从 Control 继承),该属性使 Web 窗体控件能够参与 ViewState 管理。ViewState 的类型为 Sytem.Web.UI.StateBag,这是等效于哈希表的数据结构。控件可以将数据作为键/值对保存在 ViewState 中。ViewState 通过 ASP.NET 页框架保持为字符串变量,并以隐藏变量的形式与客户端之间往返。回发时,页框架分析来自隐藏变量的输入字符串,并在页的控件层次结构中填充每个控件的 ViewState 属性。通过使用 ViewState 属性,控件可以还原其状态(将属性和字段设置为它们回发前的值)。

 

public bool Signed
  {
   get
   {
    if(ViewState["Signed"]==null)
     ViewState["Signed"] = false;

    return (bool)ViewState["Signed"];
   }
   set
   {
    ViewState["Signed"] = value;
   }
  }

 

红色标记的代码段是为ViewState设置默认值,否则控件的该属性在设计器的属性窗口将显示“未将对象设置到引用的实例”。字符串类型的属性不存在该问题。

抱歉!评论已关闭.