4

这个我不是很清楚......

当在视图上有一个网格视图时,控制器是否必须设置数据源、列等?或者我只需要公开 DataBinding 的东西,从控制器触发它,让视图上的 html/codebehind 处理所有的渲染和连接?

更准确地说:关于我应该有的观点

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

或者应该是(来自MVP 模式 - Passive View 并通过 IView (Asp.Net, Web Forms) 公开复杂类型

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

也许我完全错了......

我在哪里可以找到一个不是 ASP.Net MVP 的“Hello world”示例的示例???

4

2 回答 2

4

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

例如,您的 webform/usercontrol (View) 可以将数据源公开为对象属性,您的 View 在收到它时应该知道如何处理:

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

所以如果你需要一个 ItemDataBound 事件,我仍然会在视图中处理它。即使事件中可能存在业务逻辑。如果您需要在事件中包含业务逻辑,我会将其放入 MyObject 结果中,然后再将其传递给视图。

因此,一个示例是将“MyObject”的属性设置为“AllowDelete”,并且在您的 ItemDataBound 中,此属性的值确定是否启用了 GridView 中的列。

于 2009-03-20T03:44:02.793 回答
3

刚刚听了最近关于这个主题的 Hanselminutes,可能值得看看http://webformsmvp.com/项目,它似乎给 WebForms 中的关注点分离带来了一些僵化。

于 2010-03-13T12:38:05.007 回答