4

これについてははっきりしていません....

ビューにグリッドビューがある場合、コントローラーはデータ ソースや列などを設定する必要がありますか? または、DataBinding のものを公開し、コントローラーから起動し、ビューの html/codebehind ですべてのレンダリングと配線を処理する必要がありますか?

より正確に言うと、ビューで私が持っている必要があります

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

または、そうすべきです(MVPパターンから-パッシブビューとIView(Asp.Net、Webフォーム)を介した複雑なタイプの公開

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

たぶん私はそれをすべて間違っています....

ASP.Net の MVP の "Hello world" の例ではない例はどこにありますか?

4

2 に答える 2

4

コントローラは、データバインディングの「結果」の設定を担当する必要があります。ビューはそれを適切に表示することを担当します。

したがって、たとえば、Webフォーム/ユーザーコントロール(ビュー)では、データソースをオブジェクトプロパティとして公開し、ビューがデータを受け取ったときにその処理方法を知っておく必要があります。

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 に答える