コーディング
used_ford_focus.html
ハッピーUserControls、正しい?私はUserControls間で通信する最善の方法は、イベントを使用することだと思います。独自のEventArgsクラスを作成して、検索条件をカプセル化します。サブミッションコントロールは、検索が送信されたときにイベントを発生させ、含まれているページがイベントを処理し、検索結果コントロールを表示して検索結果を表示します。
代わりに、結果コントロールはオブジェクトのコレクションを表示するだけでよく、検索コントロールは実際に検索を実行し、EventArgsでコレクションを返します。
次は、UserControlのマスター/ディテールセットの例です。 ProjectListユーザーコントロールは、プロジェクトが選択されているイベントを発生させます:
public event EventHandler<ProjectSelectedEventArgs> ProjectSelected;
protected void uxProjectList_OnSelectedIndexChanged(object sender, EventArgs e)
{
if (ProjectSelected != null)
{
var keys = uxProjectList.DataKeys[uxProjectList.SelectedIndex].Values;
var projectId = (Guid)keys[0];
var args = new ProjectSelectedEventArgs(projectId);
ProjectSelected(this, args);
}
}
コンテナページは、イベントを処理し、プロジェクトの詳細を表示するProjectDetailユーザーコントロールのメソッドを呼び出します。
protected void uxHeroProjectList_ProjectSelected(object sender, ProjectSelectedEventArgs e)
{
uxProjectDetails.Visible = true;
uxProjectDetails.DisplayDetails(e.ProjectId);
}
私はプロ側でもう1つを追加します。私の意見で最も重要なのは、検索結果がブックマーク可能になることです。それは(私の目で)良い検索インターフェースの非常に重要な特徴です。 –
@Fredrik Mork - 良い点。 – lexx
ありがとう、私はquerystringsから自分自身を避けていたが、プロは私の立場から短所を上回る – Matt