我有一個關於ASP.NET MVP模式的問題。演示者是否可以知道會話值?如果我開始使用會話值,我不知道如何對會話進行模擬或測試,以及如果我使用相同的演示者進行Win表單的話。這是一個正確的方向,如果是的話,我在處理會話值時有什麼選擇。MVP模式和會話值
4
A
回答
3
演示者不應該知道Session對象(或來自System.Web的任何其他對象),但是如果通過視圖公開會話數據,它可以知道這些值。
隨着MVP,你有這樣的觀點:
public interface IViewCustomerView
{
ShoppingCartModel ShoppingCart {get;set}
}
在Web表單實現的觀點,我的購物來源於會話。
public partial class ViewCustomers : Page, IViewCustomerView
ShoppingCartModel ShoppingCart
{
// add null/cast checks etc. here
get { return (ShoppingCartModel) Session["Cart"]; }
set { Session["Cart"] = value; }
}
在Web表單和mock實現它可能來自別的地方。然後在演示者中,當您訪問購物車時,它不知道它來自會話:
IViewCustomerView _view;
_view.ShoppingCart...
2
我對MVP位不太確定,但是你可以編寫一個像ISessionState
這樣的接口,它可以設置/從某些東西獲取值。在你的網站上,這個會讀取/寫入真實的Session
對象,但是在測試中,你會製作一個假裝使用會話的模擬對象。
一旦你提取了這個依賴關係,應該很容易將ISessionState
實現注入到演示者或任何其他需要它的實現中。
+0
不錯的想法。請試試這個 – Greens
相關問題
- 1. MVP和應用程序控制器模式的會話狀態
- 2. mvc和mvp設計模式
- 3. GWT和Mock在MVP模式
- 4. Sessions_End和StateServer會話模式
- 5. 使用MVP模式
- 6. 使用MVP模式
- 7. 使用MVP模式
- 8. SharePoint WebParts MVP模式
- 9. WPF MVP模式和LINQ to SQL
- 10. GWT小部件庫和MVP模式
- 11. 在ASP.NET中使用Autofac和MVP模式
- 12. GWT MVP存儲會話數據
- 13. Inproc和Outproc會話狀態模式
- 14. PHP $ _SESSION和Backbone.js的會話模式
- 15. mvp設計模式 - 問題
- 16. winforms MVP設計模式
- 17. 帶MVP模式的Telerik RadGrid
- 18. .net上的MVP模式
- 19. 如何處理會話超時異常(使用MVP Places和Activities)?
- 20. NHibernate會話管理/模式
- 21. ASP.Net中的會話模式?
- 22. 會話vs單例模式
- 23. 會話狀態SQLServer模式
- 24. 樣式-CSS php會話值
- 25. MVP:返回值和可測試代碼的對話框
- 26. 檢查cookie和會話值
- 27. 會話值和兼容性?
- 28. 會話[「值」]和會話[「值」]是否有區別?
- 29. 在MVP模式上重用代碼
- 30. 演示者能說明嗎? (MVP模式)
您的問題讀到我的腦海裏。給予好評。 – granadaCoder