【问题标题】:How ASP.NET MVC removes ViewState from application?ASP.NET MVC 如何从应用程序中删除 ViewState?
【发布时间】:2009-10-05 16:14:40
【问题描述】:

我正在查看 ASP.NET MVC 源代码,但没有找到从应用程序中删除 ViewState 的位置。

(ViewState 不仅仅是禁用,它会从应用程序中的所有页面中删除)

谢谢!

更新:

是否可以移除 Viewstate 隐藏字段?

【问题讨论】:

    标签: c# asp.net-mvc viewstate


    【解决方案1】:

    这很容易;它没有被删除。您仍然可以设置和读取 ViewState。只是不要期望它包含上一个请求中的任何内容。这实际上很方便,因为这意味着某些将其属性值存储在 ViewState 中的 ASP.NET 服务器控件可以在 ASP.NET MVC 中工作。只要将 ViewState 从一个请求持续到另一个请求并不重要,这些控件仍然可以正常工作。

    当然,从一个请求到另一个请求中删除 ViewState 的持久性使其几乎无用。这就是人们通常说 ASP.NET MVC“没有 ViewState”的原因。这在技术上并不准确。 ViewState 确实存在;它只是不以对任何事情有用的形式存在。

    【讨论】:

    • 我知道 ViewState 永远不会被删除。响应我的更新:在“普通 ASP.NET”(PostBack)中,不可能删除 ViewState 隐藏输入,为了将其隐藏在 HTML 页面中,只需删除表单中的 runat="server"。谢谢!
    • ASP.NET MVC 永远不会将 ViewState 字段放入您的页面中。但是,WebForms 设计器 将在您的 MVC 页面中添加此字段,这是不将其与 MVC 视图一起使用的众多充分理由之一。删除这个隐藏的输入是完全安全的。
    【解决方案2】:

    MVC 不使用视图状态——它是完全无状态的(就像 web 应该的那样)。

    您可能需要稍微改变一下您的思维方式,并考虑您的应用程序在请求-响应模型下运行(它一直都有,但标准的 asp.net 使用视图状态来尝试“欺骗”开发人员,如果您愿意的话,像页面有状态一样思考或编码。)

    【讨论】:

      【解决方案3】:

      ViewState 不是 ASP.NET MVC 页面生命周期的一部分。 ViewState 仅在 ASP.NET WebForms 应用程序中可用。

      这也意味着您无法使用大多数依赖 ViewState 的 ASP.NET WebForms 控件

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-07-10
        • 2023-03-14
        • 2010-12-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多