none
Page_Loadイベントにて、クライアントコールバックかを判別するには? RRS feed

  • 質問

  • 優佑と言います。 よろしくお願いします。

    わかりづらいタイトルで申し訳ありません。

    ASP.NET側のマスターページにて、キーボード入力時のキーコードを取得する為、

    JavaScriptよりコールバック処理を行なっています。

    具体的に説明しますと、マスターページのフッターに[F1][F2][F3]の3つのボタンを配置し、

    ボタンクリック時には、それぞれのクリックイベントで処理を行い、ファンクションキーを押下

    した場合は、JavaScriptでキーコードを取得し、適切なキーであればVB.NET側の処理を

    行なう仕組みを実現する為にクライアントコールバックを使用しています。

    ※他の実現方法が思いつかなかった為、定石なやり方かどうかわかりませんが…。

    直接ファンクションキーを押下した場合の動きとして、

    (Srv)Page_Load → (Srv)RaiseCallbackEvent → (Srv)GetCallbackResult →(JS)ReceiveServerData

     ※(Srv)...VB.NET側の処理 (JS)...コールバック後のJavaScript側の処理

     の動きとなっていることを確認しました。

    [F1]のフッターボタンを押下した場合は、

    (Srv)Page_Load → [F1]Clickイベント の動きとなっていることを確認しました。

     

    Page_Load内の記載は以下の通りです。

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

      Dim cbReference As String
      cbReference = Page.ClientScript.GetCallbackEventReference(Me, "arg", "ReceiveServerData", "context")
      Dim callbackScript As String = ""
      callbackScript &= "function CallServer(arg, context) { " & cbReference & "} ;"
      Page.ClientScript.RegisterClientScriptBlock(Me.GetType(), "CallServer", callbackScript, True)

    End Sub

    上記の記載内容を、クライアントコールバックが必要な場合と、そうでない場合(クリックイベントを実行する場合)とで

    判断をし、Page_Load内に記載する5行を処理する/しないを切り分けたいのですが、何をもって切り分けを行えば

    よいかわかりません。

    ※それぞれのパターンでsender内容の違いを確認したのですが、判別する項目が見当たらなかった(見落とした?)です。

     

    ご存じの方がいらっしゃいましたらご教示頂けますようお願い致します。

     

    開発環境: VS2008/ASP.NET/VB.NET

    2010年7月27日 9:46

回答


  • U-優佑 さんに返信

    > 上記の記載内容を、クライアントコールバックが必要な場合と、そうでない場合(クリックイベントを実行する場合)とで
    > 判断をし、Page_Load内に記載する5行を処理する/しないを切り分けたいのですが、何をもって切り分けを行えば
    > よいかわかりません。

    コールバックによるリクエストか否かは Page.IsCallback プロパティで判別できるかと思います。
    うーん、読み違っているかしら。クライアントコールバックが必要かどうかの判断ですか。
    ユーザーがキーを押すか Button をクリックするかの判別を事前に行うのは無理ではないでしょうか。
    2010年7月27日 12:18
  • 優佑さま、こんにちは。

    Page.IsCallBack、またはPage.IsPostBackを使ってみるのは、いかがでしょうか?

    (参考)
    方法 : ASP.NET Web ページが呼び出された方法を確認する
    http://msdn.microsoft.com/ja-jp/library/ms178141(v=VS.90).aspx

    2010年7月27日 13:56

すべての返信


  • U-優佑 さんに返信

    > 上記の記載内容を、クライアントコールバックが必要な場合と、そうでない場合(クリックイベントを実行する場合)とで
    > 判断をし、Page_Load内に記載する5行を処理する/しないを切り分けたいのですが、何をもって切り分けを行えば
    > よいかわかりません。

    コールバックによるリクエストか否かは Page.IsCallback プロパティで判別できるかと思います。
    うーん、読み違っているかしら。クライアントコールバックが必要かどうかの判断ですか。
    ユーザーがキーを押すか Button をクリックするかの判別を事前に行うのは無理ではないでしょうか。
    2010年7月27日 12:18
  • 優佑さま、こんにちは。

    Page.IsCallBack、またはPage.IsPostBackを使ってみるのは、いかがでしょうか?

    (参考)
    方法 : ASP.NET Web ページが呼び出された方法を確認する
    http://msdn.microsoft.com/ja-jp/library/ms178141(v=VS.90).aspx

    2010年7月27日 13:56