(20):チュートリアル(9)〜Presenterの実装〜
Presenterの「ViewAllPresenter.cs」にページ固有のロジックを記述する。
- (1)コントローラにあたる「AuthorsBLController」を取得。
- ObjectBuilderのDIで設定するので、[CreateNew]属性をつけたコンストラクタを用意。
private AuthorsBLController _controller; public ViewAllPresenter([CreateNew] AuthorsBLController controller) { _controller = controller; }
- (2)Page_Loadイベントで呼び出す処理を記述。ここではAuthorsBLControllerクラスのGetAuthorsメソッドを呼び出して、著者情報をView.Authorsに設定。
public override void OnViewLoaded() { View.Authors = _controller.GetAuthors(); }
(3)ページの初期表示時(ポストバックでない場合)に呼び出す処理を記述。
public override void OnViewInitialized() { // 特に初期処理なし }
完成コードは次の通り。
using System; using System.Collections.Generic; using System.Text; using Microsoft.Practices.ObjectBuilder; using Microsoft.Practices.CompositeWeb; namespace MyWcsf.AuthorsBL.Views { public class ViewAllPresenter : Presenter<IViewAll> { //コントローラのプロパティ(DIにて設定) private AuthorsBLController _controller; public ViewAllPresenter([CreateNew] AuthorsBLController controller) { _controller = controller; } //Page_Load時に呼び出されるメソッド public override void OnViewLoaded() { View.Authors = _controller.GetAuthors(); } //Page_LoadかつPostBackでない場合に呼び出されるメソッド public override void OnViewInitialized() { // 特に初期処理なし } } }