會話處理適用於MVC的整體概念嗎?模型還是控制器?MVC中的會話
MVC中的會話
回答
SessionState的目的是將有關用戶會話的數據從一個HttpRequest持久化到下一個。在某些情況下,這比手動實現cookie或爲會話信息創建數據存儲並傳遞標識符更簡單。 MVC的做法是使用包裝SessionState的TempData
。這意味着直接訪問SessionState可能沒有必要,除非您重寫某些核心基礎架構。我認爲模型是對數據更隱喻的表示。在模型中使用會話數據似乎並不完全正確,因爲模型可能代表了一些業務邏輯,SessionState會不必要地複雜化。 System.Web.Mvc提供了許多機制,允許我們維護狀態而不必直接使用HttpContext。這些機制包含爲ControllerContext
,ActionFilter
過濾上下文,ExceptionContext
,AuthorizationContext
,ModelBindingContext
,RouteData
和ViewContext
的屬性。它們有助於將一堆可能存儲在會話狀態集中的不同事物分隔成更多邏輯分隔的隔離專區。
TempData可以從ControllerContext和ViewContext中獲得。這是您訪問會話狀態功能的接入點。如果你想控制這些數據的處理和寫入,並且不確定在哪裏,動作過濾器是一個相當不錯的注入點,因爲他們將這種擔心放在主要的面向業務的控制器操作之外。本文探討如何使用ActionFilter自動將模型狀態持久保存在各個請求中:http://blog.jorritsalverda.nl/2010/03/10/maintainable-mvc-post-redirect-get-pattern/。我認爲這可能有幫助。這個問題不是非常具體......如果我沒有直接解決你的問題,請澄清。
我更喜歡將它們保留在控制器級別或將它們隱藏在自定義操作過濾器或模型活頁夾中。
會話狀態實際上是一個Web客戶端的概念,我寧願將它們排除在我的模型之外。或者至少我會將它包裝在我自己的會話或上下文界面中。
- 1. ASP中的會話MVC
- 2. 在ASP.NET MVC中的會話
- 3. mvc中的會話管理
- 4. ASP.NET MVC會話
- 5. PHP MVC會話
- 6. 會話使用MVC中
- 7. 一個會話中的多個用戶的ASP MVC http會話
- 8. ASP.NET MVC 5會話
- 9. mvc會話超時
- 10. Safari會話總是忘記asp.net中的會話變量mvc 3
- 11. RequestParam和會話的Spring MVC
- 12. Spring MVC的 - 會話 - 請求
- 13. 的Spring MVC +會話管理
- 14. 通過MVC的PHP會話
- 15. MVC ASP.net會話是空的
- 16. ASP.NET MVC中的會話超時警告
- 17. ASP.Net中的會話超時問題MVC
- 18. 指定ASP.NET MVC中的只讀會話
- 19. Spring MVC中的會話管理
- 20. ASP.NET中的會話管理mvc
- 21. ASP.NET MVC中的NHibernate上下文會話
- 22. Spring MVC中的會話同步
- 23. ASP.NET MVC中會話cookie的持久性
- 24. Spring MVC 3.0中的會話處理
- 25. ASP.NET MVC中的會話過期問題
- 26. ASP.Net中的會話固定MVC
- 27. 會話中的Asp.net mvc類參考
- 28. 會話中的Spring MVC設置變量
- 29. 春季MVC中的Http會話
- 30. 在asp.net中的會話超時mvc