问题描述
|
根据另一篇文章的建议,我将视图状态移到了数据库中,而不是完全禁用它。但是,现在我已经这样做了,当我在带有动态添加项的下拉列表中发回表单时,该值为空(这是在禁用viewstate时发生的,这是我将其移至D B)
为什么会这样呢?视图状态在页面上时还可以,为什么现在视图状态在数据库中时为什么它将停止工作?
使用.NET 2.0
谢谢。
解决方法
这可能是生命周期问题。当页面期望时,您可能还没有足够早地恢复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();
}
,我不确定您是如何实现它的,但是我的方式是创建自定义PageStatePersister
和PageAdapter
。如果您做对了,那就行得通。这是一篇文章,提供了使用此方法的示例。
http://forums.asp.net/t/1293397.aspx/1?Store+ViewState+in+the+Database+in+++Hidden+Form+Field
马修