3

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

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

  • WebForm 用户控件是否保持状态?
  • 如果是,一般是如何完成的(指向在线资源以获取详细信息)
  • 如果没有,它可以以某种方式实施吗?有样品吗?
4

1 回答 1

5

可能最常见的维护状态的方法是使用 ViewState 而不是私有实例字段。例如,如果您的 UserControl 包含一个 property 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; }
}

谷歌ViewState了解更多信息。有一些陷阱,彻底理解它是个好主意。

于 2012-06-14T09:06:37.893 回答