Viewstate移至数据库后,缺少回发值

问题描述

| 根据另一篇文章的建议,我将视图状态移到了数据库中,而不是完全禁用它。但是,现在我已经这样做了,当我在带有动态添加项的下拉列表中发回表单时,该值为空(这是在禁用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 马修