【问题标题】:Why does __VIEWSTATE hidden field gets rendered even when I have the EnableViewState set to false为什么即使我将 EnableViewState 设置为 false 也会呈现 __VIEWSTATE 隐藏字段
【发布时间】:2008-11-12 04:52:58
【问题描述】:

我看到 __VIEWSTATE 字段被渲染,即使我在页面级别设置了 EnableViewState="false"。如果我删除表单元素的 runat="server" 标记,则不会呈现此字段。有人可以解释一下吗?

【问题讨论】:

    标签: asp.net asp.net-mvc viewstate


    【解决方案1】:

    __VIEWSTATE 字段也用于存储控制状态,它不是可选的。此外,如果我没记错的话,视图状态中包含的信息用于验证回发(并且验证已启用,这是默认设置)。因此,只要您拥有带有 runat="server" 的表单,您就会拥有一个 viewstate 字段。但是,如果禁用所有视图状态,您应该会注意到字段大小要小得多。

    【讨论】:

    • 这是正确的,ViewState 也用于“验证”一个 PostBack 到页面。
    • 是的,即使没有使用任何控制状态,ViewState 隐藏字段也只是为了 IsPostBack 属性而呈现
    • viewState 可能有一个空值我在这里发布了答案:stackoverflow.com/questions/2432972/…
    【解决方案2】:

    提示: 在 Asp.net 中,如果您需要完全去除 __VIEWSTATE,请重写 Page.Render 方法,将页面呈现为字符串,并从中去除 __VIEWSTATE 文本。

    【讨论】:

    • 谢谢。这也可以通过从 <form> 元素中删除 runat="server" 来完成。
    猜你喜欢
    • 2018-02-02
    • 1970-01-01
    • 1970-01-01
    • 2021-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-14
    • 1970-01-01
    相关资源
    最近更新 更多