Viewstate移动到数据库后缺少回发值

时间:2011-04-13 08:56:40

标签: asp.net postback viewstate

根据另一篇文章的建议,我已将我的视图状态移至数据库,而不是直接禁用它。但是,现在我已经这样做了,当我回发一个带有下拉框的表单,其中项目已经动态添加,值为空(这是在我禁用了viewstate时发生的,这也是我将它移动到DB)

为什么会这样?当viewstate出现在页面上时,这是好的,那么为什么现在Viewstate在数据库中会停止工作呢?

使用.NET 2.0

感谢。

2 个答案:

答案 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)

我不确定您是如何实现它的,但我这样做的方法是创建自定义PageStatePersisterPageAdapter。如果你做对了,那就行了。这篇文章提供了如何使用此方法执行此操作的示例。

http://forums.asp.net/t/1293397.aspx/1?Store+ViewState+in+the+Database+instead+of+Hidden+Form+Field

马修