我有一个关于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