MVP模式 - 被动视图和通过IView(Asp.Net,Web窗体)公开复杂类型

时间:2008-09-30 14:17:10

标签: asp.net mvp

我最近使用Passive View方法切换到MVP模式。当视图接口只公开基本的clr类型时,我觉得很舒服,比如映射到TextBoxes的字符串,映射到DropDownLists的IDictionary,映射到某些网格的IEnumerable,转发器。

然而,最后一种方法只适用于那些我只关心一个柱子的网格。如何在IView中映射网格的多行内容?现在,我想到了两个解决方案,两者都不是很出色:

  1. 为网格内容创建DTO并在IView中公开IEnumerable,   或
  2. 在IView中公开IEnumerable或只是“网格”。
  3. 第一个解决方案似乎打破了被动视图规则,同时更接近监督控制器模式,第二个解决了整个MVP模式。 你怎么处理这个?

    谢谢,Łukasz

1 个答案:

答案 0 :(得分:3)

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模式一起使用时,我发现这个小模式非常有用。