ユーザー コントロールに独自のビューとプレゼンターがあるのはなぜですか?
ページのビューとプレゼンターを用意し、ページ ビューを介してユーザー コントロールを操作することをお勧めします。イベントを処理したり、ユーザー コントロールとの間でデータを渡したりする必要がある場合は、それらをページに公開し、ページ ビューでプレゼンター用にラップすることができます。ラッピングにより、プレゼンターはユーザー コントロールと直接通信できなくなります。
ここにいくつかの疑似コードがあります:
IFooPageView
{
string SomeData {get; set;}
event EventHandler SomeEvent;
}
public class FooPageView : IFooPageView
{
public event EventHandler SomeEvent;
public SomeData
{
get { return myUserControl.SomeData;}
set { myUserControl.SomeData = value;}
}
protected override void OnInitComplete(EventArgs e)
{
//handle the user control event
this.myUserControl.SomeEvent += SomeEvent_EventHandler;
}
private void SomeEvent_EventHandler(object sender, EventArgs e)
{
//Raise the user control event to the presenter
if (SomeEvent!= null)
SomeEvent(this, EventArgs.Empty);
}
}
Phil Haack のASP.NET Supervising Controller (Model View Presenter) From Schematic To Unit Tests to Code を読みます。
Phil の記事には、Web フォームの優れた MVP 情報がたくさんあります。