这个问题我见过很多次,通常是因为 ViewState
变量在页面生命周期中过早被评估,或者 EnableViewState
是 false,但是我已经检查了这两个,它们都符合我的预期。
我的代码:
public Int32 MyNumber
{
get
{
if (ViewState["MyNumber"] != null)
{
return (Int32)ViewState["MyNumber"];
}
return 0;
}
set
{
ViewState["MyNumber"] = value;
}
}
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
if (!this.IsPostBack)
{
MyNumber = 23;
}
}
protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e);
var numberValue = MyNumber;
}
首次调用 OnPreRender
时,numberValue
为 23。此后的每次后续调用都为 0。每次有回发时,它似乎都被重置了。
问题
如何让值在回发后保持不变?
我尝试过的
将值赋值置于回发检查之外,但这首先违背了使用 ViewState
的目的。
最佳答案
我不知道还有一个 ViewStateMode
如果设置为 Disabled
会导致此行为,它是(在母版页上)。
我现在已在我的控件上将其设置为 Enabled
,并且我的 ViewState
值如我希望的那样保持不变。
关于c# - 回发后 ViewState 变量重置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20617586/