方法 : ASP.NET Web ページにコールバックを実装する
更新 : 2007 年 11 月
クライアント コールバックでは、クライアント スクリプト関数が ASP.NET Web ページに要求を送信します。Web ページでは、通常の有効期間のコンパクト バージョンを実行し、コールバックを処理します。コールバック イベントが想定するユーザー インターフェイス (UI: User Interface) から実行されるようにするには、コールバックを検証します。コールバックの検証には、Web ページの描画中に検証に関するイベントを登録し、コールバック中にイベントを検証します。コールバックの概要については、「ASP.NET Web ページでポストバックせずにプログラムによってクライアント コールバックを実装する」を参照してください。
ICallBackEventHandler インターフェイスを実装するには
単一ファイルのページまたはユーザー コントロールの場合、ページに @ Implements ディレクティブを使用して ICallbackEventHandler インターフェイスを実装します。次に例を示します。
<%@ Page Language="VB" %> <%@ Implements Interface="System.Web.UI.ICallbackEventHandler" %>
<%@ Page Language="C#" %> <%@ Implements Interface="System.Web.UI.ICallbackEventHandler" %>
メモ : 分離コード ページ モデルを使用している場合、部分クラスには ICallbackEventHandler インターフェイスを実装します。
ICallbackEventHandler インターフェイスの RaiseCallbackEvent メソッドを実装します。RaiseCallbackEvent メソッドには、イベントの引数を表す単一の引数を指定します。次に例を示します。
Public Sub RaiseCallbackEvent(ByVal eventArgument As String) _ Implements System.Web.UI.ICallbackEventHandler.RaiseCallbackEvent End Sub
public void RaiseCallbackEvent(String eventArgument) { }
ICallbackEventHandler インターフェイスの GetCallbackResult メソッドを実装します。GetCallbackResult メソッドに引数はありません。コールバックの結果を表す文字列を返します。次の例では、returnValue という文字列が返されます。
Public Function GetCallbackResult() _ As String Implements _ System.Web.UI.ICallbackEventHandler.GetCallbackResult Return returnValue End Function
public String GetCallbackResult() { return returnValue; }
イベントを検証するためにコールバックを登録するには
Page クラスの Render メソッドをオーバーライドし、ClientScriptManager クラスの RegisterForEventValidation メソッドを使用して検証のイベントを登録します。Page クラスの ClientScript プロパティを使用して、ClientScriptManager クラスの参照を取得できます。次の例では、Callback1 というコールバックがイベントの検証のために登録されます。
Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter) Page.ClientScript.RegisterForEventValidation("ClientCallback1") MyBase.Render(writer) End Sub
protected override void Render(HtmlTextWriter writer) { Page.ClientScript.RegisterForEventValidation("ClientCallback1"); base.Render(writer); }
コールバックを検証してコールバックの結果を返すには
RaiseCallbackEvent メソッドでは、ClientScriptManager クラスの ValidateEvent メソッドを使用してイベントを検証します。検証のためにイベントを登録したときに使用したのと同じメソッド シグネチャを使用します。次の例では、1 つの引数を指定するメソッド シグネチャが使用されます。
Public Sub RaiseCallbackEvent(ByVal eventArgument As String) _ Implements System.Web.UI.ICallbackEventHandler.RaiseCallbackEvent Try Page.ClientScript.ValidateEvent("ClientCallback1") ' Callback logic goes here. returnValue = "callback result" Catch ' Failed callback validation logic. End Try End Sub
public void RaiseCallbackEvent(String eventArgument) { try { Page.ClientScript.ValidateEvent("ClientCallback1"); // Callback logic goes here. returnValue = "callback result"; } catch { // Failed callback validation logic. } }
検証が成功した場合、コールバック イベント ロジックを使用してコードの処理が進みます。RaiseCallbackEvent メソッドが完了した後に、GetCallbackResult メソッドが呼び出され、クライアント スクリプト関数に文字列としてコールバック結果が返されます。
クライアント コールバックをサポートするクライアント スクリプト関数の作成と実装の詳細については、「ASP.NET Web ページでポストバックせずにプログラムによってクライアント コールバックを実装する」および「検証付きクライアント コールバックの実装例」を参照してください。