ViewModel、ViewData、ViewBag、TempData、Session In MVC 對比
来源:互联网 发布:ubuntu 断电无法启动 编辑:程序博客网 时间:2024/06/10 15:36
ViewModel、ViewData、ViewBag、TempData、Session In MVC
ViewModel
ASP.NET MVC 中 ViewModel 是強類型類。
ViewModel 是數據模型和視圖之間的橋樑。
ViewModel 在控制器中被填充數據之後被傳遞給視圖模板以在視圖中呈現。
ViewModel 中擁有所有的數據驗證規則。
ViewData
ViewData 是派生自 System.Web.Mvc.ViewDataDictionary 的無類型的鍵-值字典。(un-typed key-value dictionary)
數據以 key-value 成對的形式存儲於 ViewData 中。
ViewData 被用於在控制器和視圖之間傳遞數據。
ViewData 的壽命只限於當前請求。ViewData 的生命週期開始於‘控制器’,終止於‘視圖’渲染結束。
// Populating ViewData in Controllerpublic ActionResult Index(){ ViewData["SomeKey"] = "Some Data"; return View();}// Retriving ViewData value in the view@ViewData["SomeKey"].ToString()
ViewBag
ViewBag 是動態對象,它是對 ViewData 的一個包裝。
ViewBag 派生自 System.Web.Mvc.ControllerBase.ViewBag 。
由於 ViewBag 是動態對象,它其中不能含有任何預定義的屬性。
ViewBag 的壽命只限於當前請求。ViewBag 的生命週期開始於‘控制器’,終止於‘視圖’渲染結束。
// Populating ViewBag in Controllerpublic ActionResult Index(){ ViewBag.SomeProperty = "Some Value"; return View();}// Retriving ViewBag value in the view@ViewBag.SomeProperty.ToString()
TempData
TempData 對象派生自 System.Web.Mvc.TempDataDictionary 。
TempData 無類型的鍵-值字典對象。(un-typed key-value pair dictionary object)
TempData 的生命週期從一個請求跨越到另一個請求。例如:只有呼叫從一個動作方法重定向至另一個動作方法時,數據才會持續存在,並且此對象在重定向動作方法中被使用之後會自動銷毀。
TempData 的通常用途是:在動作方法之間存儲傳遞小數據。例如:一個動作向另一個動作傳遞錯誤訊息。
若想在首次重定向的動作中保持 TempData ,使用 TempData.Keep() 方法為將來的重定向動作記住此數據。
TempData 在 ASP.NET Session 中存儲它的目錄。所以在使用 TempData 時需要小心注意。如同 Session 一樣,在服務器集群環境中 TempData 可能會製造麻煩。
// Populating TempData in Controllerpublic ActionResult Index(){ TempData["ErrorMsg"] = "Some Error Here"; return RedirectToAction("Error");}// Retriving TempData value in redirected action methodpublic ActionResult Error() { var msg = TempData["ErrorMsg"]; // Do Something}
Session
Session 是派生自 System.Web.SessionState 的鍵-值對象。
Session 被用於跨越控制器傳遞數據。
Session 的生命週期一直持續到以下情況時,Session 才會被銷毀(超時、清除、移除全部、拋棄方法、用戶關閉瀏覽器)。
盡量減少對 Session 的使用,在服務器集群環境中 Session 是不可靠的。
// Populating sessionpublic ActionResult Index(){ Session["SomeKey"] = "Some Value"; return RedirectToAction("Error");}// Retriving session value public ActionResult Error() { var msg = Session["SomeKey"]; // Do Something}
- ViewModel、ViewData、ViewBag、TempData、Session In MVC 對比
- ASP.Net MVC中 ViewBag, ViewData, TempData, ViewModel 的区别
- .NET MVC TempData、ViewData、ViewBag
- MVC之-- ViewData vs ViewBag vs TempData vs Session
- MVC控制器传递多个Model到视图,使用ViewData, ViewBag, 部分视图, TempData, ViewModel, Tuple
- MVC中的ViewData、ViewBag和TempData
- 《MVC》——ViewData、ViewBag、TempData、model
- MVC中的ViewData、ViewBag和TempData
- tempdata,viewdata,viewbag
- ViewData/TempData/ViewBag 差異性
- TempData ViewBag ViewData
- ViewData ViewBag TempData
- MVC中ViewBag、ViewData和TempData 的区别与联系
- MVC中 ViewData、ViewBag、TempData的区别与联系
- Asp.net MVC中ViewData、ViewBag和TempData区别
- MVC 的ViewBag, ViewData and TempData使用与区别
- MVC页面常见三种传值方式——ViewData,ViewBag,TempData
- MVC中的ViewData与ViewBag与TempData的区别
- Jmx 资源管理——demo篇
- django中session实现方式
- Netty实战读书笔记(第八章)
- 学习列表 java 进阶
- 1073. 多选题常见计分法(20)
- ViewModel、ViewData、ViewBag、TempData、Session In MVC 對比
- 云客Drupal8源码分析之实体字段管理器entity_field.manager
- java并发编程的艺术【三】-【一】java内存模型基础
- 用meta name="renderer" content="webkit|ie-comp|ie-stand"来切换360双核安全浏览器的极速模式和兼容模式
- 初识python中的类与对象
- Candence 16.6 OrCAD Capture Start Page Close
- sourcetree许可证 官方绿色版
- leetcode 151. Reverse Words in a String
- 数据恢复技术笔记