【发布时间】:2010-09-30 13:37:03
【问题描述】:
我在视图状态中存储了一些属性,因此我可以轻松地在 Ajax 请求中使用它们。我的属性代码如下所示:
public Language Language
{
get { return (Language)ViewState["controls_window_Language"]; }
set { ViewState["controls_window_Language"] = value; }
}
但是,我的客户报告了一些错误,当我找到它时,这是因为 Language 为空。它不会每次都发生;它似乎是完全随机的,我无法重现该错误。我还在视图状态中存储了其他属性,并且我在语言之前使用了该属性,所以我没有丢失所有视图状态。
最合乎逻辑的原因是语言被覆盖了,但我唯一一次写它是在页面首次加载时。
我的 viewstate 属性丢失的原因是什么?
【问题讨论】:
-
您使用的是什么形式的 AJAX?是否是 Microsoft ASPX 模型(通常是更新面板)导致完整的帖子返回到页面(和页面事件?)
-
“我写它的唯一时间是页面第一次加载的时候”——我们能看到那个代码吗?
-
是的,我使用 Ajax.Net 和更新面板。
-
代码在 if(!IsPostBack) { ... } 内,因此不会在回发时被覆盖。