Webforms 中的 ViewState 和 MVC 中的 ViewBag 之间是否存在功能差异?它们似乎是“同一件事”。并且可以以相同的方式使用。我问是因为 MVC 促进了无状态 Web,而不是在页面中填充数据导致膨胀和性能下降。但似乎你也可以在 MVC 中做到这一点。看起来,他们所做的只是给它一个新名字。
问问题
14900 次
3 回答
9
Web 表单中的ViewState将表单数据序列化为表单中隐藏的加密字段,因此可以在回发时重新绑定数据。
ViewBag/ViewData是一个字典,您可以在其中“填充”数据。例如,您可以在 Controller 中添加它,然后在 View 中访问它。数据dynamic
使处理数据变得困难。ViewBag 不会发送到客户端,它是 MVC(服务器管道)的一部分。
两者都应该避免。
ViewState 通过,好吧,不使用它并找到解决方法。并且应该通过使用 ViewModel 来避免 ViewBag。
于 2012-03-12T02:51:48.670 回答
6
Viewstate 与表单的内容一起回发到服务器,因此其中的值在回发时可用。viewbag 只保存其中的值,直到页面被提供,然后 ViewBag 从内存中删除。所以你可以使用 ViewState 来保持调用之间的状态,但你不能对 ViewBag 做同样的事情。
于 2012-03-12T02:51:44.957 回答
4
ViewBag 不会发送到客户端( Browser )。它纯粹是用来从控制器转换到视图(在它发送回客户端之前)。
在 MVC 中,如果您从该页面获得回发,那么您将无法恢复您的“状态”,就像 Viewstate 所做的那样,您拥有的唯一状态是您发送到浏览器的任何内容,以及您发回的任何内容。
于 2012-03-12T02:50:38.577 回答