C# 视图状态不保留值
我试图通过以下方式使用视图状态保留控件的“可见”属性C# 视图状态不保留值,c#,asp.net,viewstate,C#,Asp.net,Viewstate,我试图通过以下方式使用视图状态保留控件的“可见”属性 public bool showstatusbox { get { return Convert.ToBoolean(ViewState["statusbox"]); } set { ViewState["statusbox"] = value; } } 除此之外,我还应该做些什么来保持价值。因为,虽然我将该值存储在视图状态中,但在回发时,它将变为null。您是否确认该控件的EnableViewState为true?我记得存
public bool showstatusbox {
get { return Convert.ToBoolean(ViewState["statusbox"]); }
set { ViewState["statusbox"] = value; }
}
除此之外,我还应该做些什么来保持价值。因为,虽然我将该值存储在视图状态中,但在回发时,它将变为null。您是否确认该控件的EnableViewState为true?我记得存在此问题,并使用如下代码解决了此问题:
protected override object SaveViewState()
{
return new object[] {
TaxRate,
SubTotal,
Tax,
LetterId,
ActivityIds,
AssociateLettersToInvoice
};
}
protected override void LoadViewState(object savedState)
{
var array = (object[])savedState;
TaxRate = (decimal)array[0];
SubTotal = (decimal)array[1];
Tax = (decimal)array[2];
LetterId = (int?)array[3];
ActivityIds = (string)array[4];
AssociateLettersToInvoice = (bool)array[5];
}
此代码看起来是正确的,您应该添加使用此属性的任何其他代码。您可以发布您的aspx/ascx代码吗?您确定没有其他代码在此属性上践踏吗?毕竟,它本质上是一个全局变量。你可以尝试将setter
设置为private
,看看你是否在其他地方得到了设置值的指示……你能简单地解释一下你试图在上面做什么吗?@Rocky-我不相信在不知道什么让你困惑的情况下我能更好地解释它。好的。你确定你在回发后检查了这个变量?由于viewstate作为隐藏字段存储在客户机上,因此它仅在发布表单时返回(SubmitBehavior)。