1

asp.net コントロールを使用しないユーザー コントロール (例: foo.ascx) があります。ボタンクリックイベントなど、依存できるものはありません。したがって、次のオプションはありません。

void Page_Load(object sender, EventArgs e) {
  MyButton.Click += MyButton_Click; // <-- I can't do this, there are no asp.net controls
}

void MyButton_Click(object sender, EventArgs e) {
    OnItemSelected("foo"); // fire my custom event
}

ItemSelectedEvent を発生させる必要があります。メソッドとイベントをそのようにする方法を知っています

public event EventHandler<MyEventArgs> ItemSelected;

void OnItemSelected(string selectedItem) {
  var tmp = ItemSelected;
  if (tmp != null)
    tmp(this, new MyEventArgs { SelectedItem = selectedItem });
}

イベントを発生させていることを示すためにクライアント サイトで必要な JavaScript ItemSelected(つまり、サーバーに正しくポスト バックする方法) と、その情報をキャプチャしてOnItemSelectedメソッドを呼び出すためにコード ビハインド ページに実装する必要があるものは何ですか?

4

1 に答える 1

4

私が正しく、ASP.NET WebForm を使用している場合は、ユーザー コントロールにIPostBackEventHandlerインターフェイスを実装する必要があります。このインターフェイスは、ポストバック イベントを処理するために ASP.NET サーバー コントロールが実装する必要があるメソッド (RaisePostBackEvent) を定義します。

  // Define the method of IPostBackEventHandler that raises your server side events. 
  public void RaisePostBackEvent(string eventArgument){
     OnItemSelected("foo"); // fire my custom event
  }

次に、クライアント側で、次のコードを呼び出してサーバー側イベントを実行できます。

__doPostBack(UniqueID, 'eventArgument');

UniqueID - ユーザー コントロールの一意の ID。eventArgument は空にすることも、任意の値にすることもできます (たとえば、json 形式のオブジェクトなど)。

これは、カスタム サーバー コントロール用にサーバー側のポストバック イベントを実装する方法です。

于 2013-09-27T20:52:54.963 に答える