MVP on Asp.Net WebForms

4

我不太清楚这个问题......

当在视图上有一个网格视图时,是控制器必须设置数据源、列等,还是只需公开数据绑定内容,从控制器触发并让视图的html/codebehind处理所有渲染和连接?

更准确地说,在视图上我应该有:

private GridView _gv
public _IList<Poco> Source { 
    get {_gv.DataSource;}
    set {_gv.DataSource = value;
         _gv.DataBind();}
}

或者应该是(来自MVP模式-被动视图和通过IView公开复杂类型(Asp.Net,Web Forms)

private GridView _datasource;
public DataSource 
{
  get { return _datasource; }
  set 
  { 
    _datasource = value; 
    _datasource.DataBind(); 
  }
}

也许我完全错了....
在ASP.Net上,我哪里可以找到一个不是“Hello world”示例的MVP示例?
2个回答

4

你的控制器应该负责设置数据绑定的“result”。视图负责正确显示它。

例如,你的 Web 表单/用户控件(视图)可以将数据源公开为对象属性,当视图接收到它时,它应该知道如何处理:

public MyObject DataSource 
{
  set 
  { 
    _datasource = value; 
    _datasource.DataBind(); 
  } 
}

如果您需要一个ItemDataBound事件,我仍然建议在视图中处理。即使事件中可能有业务逻辑。如果您需要在事件中有业务逻辑,我建议将其放在MyObject结果中,在传递到视图之前处理。
例如,可以在"MyObject"属性中设置"AllowDelete"属性,在ItemDataBound事件中,该属性的值决定GridView中的某一列是否启用。

3

刚听完Hanselminutes上关于这个话题的讲解,也许值得看一下http://webformsmvp.com/项目,这个项目似乎将一些严格分离WebForms中的关注点。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接