丢失WebForm用户控件的状态

时间:2012-06-14 09:01:37

标签: asp.net webforms

首先,我没有使用ASP.NET WebForms的经验。但是,我继承了一个非常古老的WebForm应用程序,我不时需要进行维护。情况就是这样:

有一个用户控件具有私有实例变量。问题是,这些实例变量的值会丢失,很可能是在页面重新加载之后。到目前为止我发现的是,似乎控制类经常被重新创建。什么是有用的,将是以下问题的答案:

  • WebForm用户控件是否保持状态?
  • 如果是的话,一般情况如何(指向在线资源的指示以获取详细信息)
  • 如果不是,可以以某种方式实施吗?任何样品?

1 个答案:

答案 0 :(得分:5)

维护状态最常见的方法可能是使用ViewState而不是私有实例字段。例如,如果UserControl包含属性Text,则可以按如下方式定义:

public string Text
{
    get { return (string) ViewState["Text"]; }
    set { ViewState["Text"] = value; }
}

您还可以将属性委派给子控件。在这种情况下,子控件将为您维护ViewState(提供EnableViewStatetrue)。例如:

public string Text
{
    get { return MyTextBox.Text; }
    set { MyTextBox.Text = value; }
}

Google ViewState了解更多信息。存在陷阱,彻底理解它是个好主意。