【发布时间】:2009-10-05 16:14:40
【问题描述】:
我正在查看 ASP.NET MVC 源代码,但没有找到从应用程序中删除 ViewState 的位置。
(ViewState 不仅仅是禁用,它会从应用程序中的所有页面中删除)
谢谢!
更新:
是否可以移除 Viewstate 隐藏字段?
【问题讨论】:
标签: c# asp.net-mvc viewstate
我正在查看 ASP.NET MVC 源代码,但没有找到从应用程序中删除 ViewState 的位置。
(ViewState 不仅仅是禁用,它会从应用程序中的所有页面中删除)
谢谢!
更新:
是否可以移除 Viewstate 隐藏字段?
【问题讨论】:
标签: c# asp.net-mvc viewstate
这很容易;它没有被删除。您仍然可以设置和读取 ViewState。只是不要期望它包含上一个请求中的任何内容。这实际上很方便,因为这意味着某些将其属性值存储在 ViewState 中的 ASP.NET 服务器控件可以在 ASP.NET MVC 中工作。只要将 ViewState 从一个请求持续到另一个请求并不重要,这些控件仍然可以正常工作。
当然,从一个请求到另一个请求中删除 ViewState 的持久性使其几乎无用。这就是人们通常说 ASP.NET MVC“没有 ViewState”的原因。这在技术上并不准确。 ViewState 确实存在;它只是不以对任何事情有用的形式存在。
【讨论】:
MVC 不使用视图状态——它是完全无状态的(就像 web 应该的那样)。
您可能需要稍微改变一下您的思维方式,并考虑您的应用程序在请求-响应模型下运行(它一直都有,但标准的 asp.net 使用视图状态来尝试“欺骗”开发人员,如果您愿意的话,像页面有状态一样思考或编码。)
【讨论】:
ViewState 不是 ASP.NET MVC 页面生命周期的一部分。 ViewState 仅在 ASP.NET WebForms 应用程序中可用。
这也意味着您无法使用大多数依赖 ViewState 的 ASP.NET WebForms 控件
【讨论】: