加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

Asp.Net WebForms上的MVP

发布时间:2020-12-16 06:51:27 所属栏目:asp.Net 来源:网络整理
导读:我不清楚这个…… 在View上有gridview时,控制器是否必须设置数据源,列等?或者我只需暴露DataBinding的东西,从控制器中激活它,让视图上的html / codebehind处理所有渲染和连接? 更确切地说:我应该在视图上 private GridView _gvpublic _IListPoco Source {
我不清楚这个……

在View上有gridview时,控制器是否必须设置数据源,列等?或者我只需暴露DataBinding的东西,从控制器中激活它,让视图上的html / codebehind处理所有渲染和连接?

更确切地说:我应该在视图上

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

或应该是(从MVP pattern – Passive View and exposing complex types through IView (Asp.Net,Web Forms))

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

也许我错了……

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

解决方法

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

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

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

所以如果你需要一个ItemDataBound事件,我仍然会在视图中处理它.即使事件中可能存在业务逻辑.如果你需要在事件中有业务逻辑,我会在传递给视图之前将它放在MyObject结果中.

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读