根据另一篇文章的建议,我已将我的视图状态移至数据库,而不是直接禁用它。但是,现在我已经这样做了,当我回发一个带有下拉框的表单,其中项目已经动态添加,值为空(这是在我禁用了viewstate时发生的,这也是我将它移动到DB)
为什么会这样?当viewstate出现在页面上时,这是好的,那么为什么现在Viewstate在数据库中会停止工作呢?
使用.NET 2.0
感谢。
答案 0 :(得分:1)
这可能是一个生命周期问题;当页面需要时,你可能没有及早回到ViewState。尝试在PageInit方法中加载ViewState并查看是否修复了它?
除非您的ViewState非常大,否则我会将其保留在页面上。如果要减少页面加载时间,首先要在页面标记中添加trace属性,并查看实际瓶颈的位置(这也将为您提供准确的ViewState大小)。除非您处理成千上万条记录,否则ViewState大小对性能的影响应该是可以接受的。
<强>更新强>
保存单选按钮选择状态的示例语法:
protected override void LoadViewState(object savedState)
{
base.LoadViewState(savedState);
if (ViewState["SomeValue"] != null)
someValue = stringViewState["SomeValue"];
}
protected override object SaveViewState()
{
ViewState["SomeValue"] = someValue;
return base.SaveViewState();
}
答案 1 :(得分:1)
我不确定您是如何实现它的,但我这样做的方法是创建自定义PageStatePersister
和PageAdapter
。如果你做对了,那就行了。这篇文章提供了如何使用此方法执行此操作的示例。
http://forums.asp.net/t/1293397.aspx/1?Store+ViewState+in+the+Database+instead+of+Hidden+Form+Field
马修