3

我最近使用被动视图方法切换到 MVP 模式。当视图界面仅公开基本的 clr 类型时,我觉得使用起来非常舒服,例如映射到 TextBoxes 的字符串、映射到 DropDownLists 的 IDictionary、映射到某些网格的 IEnumerable、转发器。

但是,这最后一种方法只有在我只关心一个列的那些网格中才有效。如何在 IView 中映射网格的多行内容?现在,我想到了两个解决方案,都不是很好:

  1. 为网格的内容创建一个 DTO 并在 IView 中公开 IEnumerable,或者
  2. 在 IView 中公开 IEnumerable 或仅公开“网格”。

第一个解决方案似乎打破了被动视图规则,同时更接近于监督控制器模式,第二个解决方案完全打破了整个 MVP 模式。你会怎么处理这个?

谢谢, Łukasz

4

1 回答 1

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

于 2008-09-30T14:39:44.013 回答