首先,我没有使用ASP.NET WebForms的经验。但是,我继承了一个非常古老的WebForm应用程序,我不时需要进行维护。情况就是这样:
有一个用户控件具有私有实例变量。问题是,这些实例变量的值会丢失,很可能是在页面重新加载之后。到目前为止我发现的是,似乎控制类经常被重新创建。什么是有用的,将是以下问题的答案:
答案 0 :(得分:5)
维护状态最常见的方法可能是使用ViewState而不是私有实例字段。例如,如果UserControl包含属性Text
,则可以按如下方式定义:
public string Text
{
get { return (string) ViewState["Text"]; }
set { ViewState["Text"] = value; }
}
您还可以将属性委派给子控件。在这种情况下,子控件将为您维护ViewState(提供EnableViewState
为true
)。例如:
public string Text
{
get { return MyTextBox.Text; }
set { MyTextBox.Text = value; }
}
Google ViewState
了解更多信息。存在陷阱,彻底理解它是个好主意。