viewbag和viewstate之间的区别?

dot*_*00b 14 viewstate asp.net-mvc webforms viewbag

Webforms中的ViewState和MVC中的ViewBag之间是否存在功能差异?它们似乎是"同一件事".并且可以以相同的方式使用.我问,因为MVC推广无状态Web而不是填充页面中的数据导致膨胀和性能降低.但似乎你也可以在MVC中做到这一点.他们所做的一切,似乎只是给它一个新名字.

RPM*_*984 7

Web窗体中的ViewState将表单数据序列化为表单中隐藏的加密字段,因此可以在回发上重新绑定数据.

ViewBag/ViewData是一个字典,您可以在其中"填充"数据.例如,您可以在Controller中添加它,然后在View中访问它.数据dynamic使得难以处理数据.ViewBag没有被发送到客户端,它是MVC(服务器管道)的一部分.

两者都应该避免.

ViewState,好吧,不使用它并找到变通方法.使用ViewModels应该避免使用ViewBag.


Gra*_*tVS 6

Viewstate与表单的内容一起回发到服务器,因此可以在回发时使用它中的值.只有在提供页面之后,Viewbag才会保留其中的值,然后从内存中删除ViewBag.因此,您可以使用ViewState在调用之间保持状态,但不能对ViewBag执行相同操作.