【问题标题】:How to disable viewstate and other hidden fields in ASP.NET如何在 ASP.NET 中禁用视图状态和其他隐藏字段
【发布时间】:2010-10-14 12:26:58
【问题描述】:

我想删除我的 ASP.NET 页面中的这些隐藏字段。或者更改名称或确保服务器代码忽略它们。

(我知道我会失去一些功能,但我认为处理它比删除 'runat=server' 更好。我唯一担心的是我真正需要的更新面板)

(以上已完成,further background is here

【问题讨论】:

    标签: asp.net viewstate


    【解决方案1】:

    您没有提到 ViewState 到底是什么在困扰您,以及您为什么要忽略该字段,因此如果不了解问题的背景,就很难提供更好的解决方案。

    您可以通过将 Page 指令的 EnableViewState 属性设置为 false 来禁用页面级别的 ViewState。

    <%@ Page enableViewState="false" %>
    

    或者,您可以通过将相应控件的 EnableViewState 属性设置为 false 来关闭服务器控件的 ViewState。

    【讨论】:

    • AFAIK,一些服务器控件选择忽略这一点并使用 ViewState。
    • 是的 - 我想我已经尝试过了,它也是其他__animals(下划线动物:-)
    • @Jakob:我认为你说得很对。正如 teedyay 在他的回答中提到的那样,如果没有重大黑客攻击,您无法完全关闭它。
    【解决方案2】:

    据我所知,您无法完全摆脱 ViewState - 即您无法摆脱名为 __VIEWSTATE 的隐藏输入字段。

    当 ViewState 被禁用时,控件仍然可以访问ControlState。 ControlState 实际上是存储在 ViewState 中的,所以它会在 __VIEWSTATE 隐藏字段中结束。

    因此关闭整个页面的 ViewState 只会使这个隐藏字段变小 - 它不会完全摆脱它。

    我相信 .NET 也会在其中放置少量自己的秘密信息,所以如果你真的破解它并重写页面呈现方式以完全摆脱这个隐藏字段,你可能会发现你的网站停止了工作。

    【讨论】:

      【解决方案3】:

      您也可以从 aspx 中删除“form”标签,但是服务器控件回发将不起作用。 我在 Ajax 加载的 popup.aspx 中使用了它并显示 OK。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-06-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多