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