MVP模式-被动视图并通过IView公开复杂类型(Asp.Net,Web窗体)
时间:2020-03-06 14:55:27 来源:igfitidea点击:
我最近使用被动视图方法切换到MVP模式。当视图界面仅公开基本的clr类型(例如映射到TextBoxes的字符串,映射到DropDownLists的IDictionary,映射到某些网格的IEnumerable,转发器)时,我感到很舒服。
但是,只有当我只关心那些列时,才可以使用最后一种方法。如何在IView中映射网格的多行内容?目前,我想到了两种解决方案,它们都不是很出色:
- 为网格的内容创建一个DTO并在IView中公开IEnumerable,或者
- 像在IView中那样公开IEnumerable或者仅公开"网格"。
第一种解决方案似乎打破了被动视图规则,而更接近于"监督控制器"模式,第二种解决方案则完全打破了整个MVP模式。
我们将如何处理?
谢谢,?ukasz
解决方案
MVP使Webforms的开发变得更加容易,除了在这种情况下。但是,如果我们使用TDD来验证IView确实需要该数据网格,那么我真的看不出问题出在哪里。
我认为我们正在尝试执行以下操作:
public interface IView { DataTable DataSource {get; set;} } public class View : IView { private GridView _datasource; public DataSource { get { return _datasource; } set { _datasource = value; _datasource.DataBind(); } }
当与MVP模式一起使用时,我发现这个小模式非常有帮助。