【问题标题】:Object does not retrieves from viewstate对象不从视图状态中检索
【发布时间】:2010-11-05 04:00:48
【问题描述】:

我快疯了 为什么?为什么?为什么?

protected void Page_Load(object sender, EventArgs e) { AttachedPartnersViewState vs = ViewState[SessionVariables.Company_AttachedPartnersViewState] as AttachedPartnersViewState;

protected override void OnUnload(EventArgs e)
{
    ViewState[SessionVariables.Company_AttachedPartnersViewState] = _viewState;

无论我做什么。但是我尝试保存这个 Viewstate,卸载时似乎没问题。然后,当页面加载时,它再次为 NULL,尽管页面处于回发状态,但它不会检索。

这是基本动作,但为什么不起作用?

顺便说一句,控件的 EnableViewstate 为 true

有什么解释吗?

【问题讨论】:

    标签: asp.net viewstate


    【解决方案1】:

    SaveViewState 在渲染方法之前。 ViewState 被编码并写出到要回发的页面。如果在 Render 之后添加 ViewState 信息,它不会写回页面。因此,它不会在回发时被读回。将 ViewState 视为隐藏输入。

    链接:

    More on Page Lifecycle

    More on ViewState

    【讨论】:

    • 谢谢我之前尝试过这样的方式,但在渲染之前它会导致巨大的错误。它不是在通过行时发生的,因为我将对象保存到视图状态(调试器通过该行正常),而是在呈现页面时(看起来如此)。引发了“System.Web.HttpUnhandledException”类型的异常。 --- 序列化“MDSWebApp.Controls.AttachedPartners+AttachedPartnersViewState”类型的值“MDSWebApp.Controls.AttachedPartners+AttachedPartnersViewState”时出错。
    • 该错误意味着您正在尝试将某些内容保存到不可序列化的视图状态中。保存到页面的所有数据都必须序列化。你想在视图状态中保存什么?
    • 谢谢,我或多或少知道这个错误的本质是什么)我尝试保存在功能上是通过回发携带我的数据的容器的类。它仅包含 3 个 Lists 和 1 个 int。但是,当我通过 Session 而不是 Viewstate(只需将 ViewState 替换为 Session)执行相同操作时,它会无误地进行序列化和检索,这很奇怪。我现在看到的唯一方法是使用会话,尽管从设计的角度来看它在逻辑上并不完全正确。无论如何,视图状态的这种行为仍然很奇怪,并提醒我进一步使用它,
    猜你喜欢
    • 2012-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多