WebForm中的ViewState和MVC中的ViewBag之间是否有功能差异?他们似乎是“同一件事”。并且可以以相同的方式使用。我问,因为MVC推动无状态网站,并没有填充页面中的数据造成膨胀和较慢的表现。但似乎你也可以在MVC中做到这一点。看起来,他们所做的只是给它一个新的名字。viewbag和viewstate之间的区别?
12
A
回答
6
ViewState在Web Forms中将表单数据序列化为表单中隐藏的加密字段,因此可以在回发中重新绑定数据。
ViewBag/ViewData是一个可以“填充”数据的字典。例如,你可以在你的Controller中添加它,然后在你的View中访问它。数据是dynamic
,这使得难以处理数据。 ViewBag不会被发送到客户端,它是MVC(服务器管道)的一部分。
两者都应该避免。
ViewState by,好吧,不使用它并找到解决方法。而ViewBag应该通过使用ViewModel来避免。
2
ViewBag不会发送到客户端(浏览器)。它纯粹是使用从控制器到View的转换(在将其发送回客户端之前)。
在MVC中,如果你从该页面得到回发,那么你不会恢复你的“状态”,就像Viewstate一样,你拥有的唯一状态是你发送给浏览器的任何内容,以及你发回的任何内容。
5
Viewstate随表单内容一起发布回服务器,因此在回发时可以使用它的值。一个viewbag只保存其中的值,直到页面被提供,然后从存储器中删除ViewBag。因此,您可以使用ViewState在呼叫之间保持状态,但不能对ViewBag执行相同的操作。
相关问题
- 1. '+ ='和'= +'之间的区别?
- 2. {!!之间的区别!!}和{{}}
- 3. ==和case之间的区别?
- 4. '#','%'和'$'之间的区别
- 5. | =和^ = css之间的区别
- 6. “%〜dp0”和“。\”之间的区别?
- 7. .eq之间的区别。和==
- 8. ==和.equals()之间的区别?
- 9. `%in%`和`==`之间的区别
- 10. SPFile和PublishingPage类别之间的区别
- 11. System.Timers.Timer Enabled = true和.Start()之间的区别Enabled = true和.Start()之间的区别
- 12. NSthread和NStimer和NSNotifcation之间的区别?
- 13. Java和C#和.NET之间的区别
- 14. sys.log()和console.log()和console.error()之间的区别?
- 15. $ .ajax()和$ .get()和$ .load()之间的区别
- 16. javascript中的/ * * /和//之间的区别
- 17. python中的[]和[,,]之间的区别
- 18. QWidget的setStyleSheet和QApplication之间的区别
- 19. CKeditor的getHtml()和getData()之间的区别
- 20. make中的“$(shell ...)”和“$$(...)”之间的区别
- 21. C中的/ +和+之间的区别?
- 22. Alamofire的responseJSON和responseData之间的区别
- 23. WordPress的:site_id和blog_id之间的区别?
- 24. '|'之间的区别和 '+' 的位操作
- 25. 春季的/ **和/ *之间的区别
- 26. Satchmo的local_settings.py和settings.py之间的区别
- 27. String.Compare和CultureInfo的CompareInfo之间的区别
- 28. XMLReader.Create()和新的XMLTextReader()之间的区别
- 29. AppWidgetProvider的onDisabled()和onDeleted()之间的区别
- 30. Request.Cookies和Response.Cookies之间的区别
ViewBag有它的地方,例如使用DropDownList和传递选择列表。检查MVC脚手架CRUD - 它使用ViewBag。你的陈述太强烈了。也许,视图模型比ViewBag更适合。请参阅http://rachelappel.com/when-to-use-viewbag-viewdata-or-tempdata-in-asp.net-mvc-3-applications – RickAndMSFT 2012-03-12 21:47:26
@ Rick.Anderson-at-Microsoft.com - 同意我的声明可能会很强大,但不是DropDownList的情况。你的ViewModel可以(也应该)有一个'SelectList'的属性,它可以绑定到你的View中。绝对不需要ViewBag。 – RPM1984 2012-03-12 22:58:24
SelectList代码由ASP.NET MVC工具生成,大多数人认为这是自动脚手架的正确选择。 – RickAndMSFT 2012-03-14 02:16:24