GetCallbackEventReferenceとRaiseCallbackEvent

3148 ワード

開発中のASP.NETアプリケーションでは、ページをリフレッシュせずにサーバの情報をコールバックする必要があることがよくあります.人々はいくつかの統合されたクラスライブラリで処理するのが好きですが、実はASP.NET自体はサーバコールバックを内蔵情報である.コールバックを実現するには、サーバがICallbackEventHandlerインタフェースを実現する必要がある簡単な例を示します.public partial class_Default : System.Web.UI.Page ,ICallbackEventHandler {  
    protected void Page_Load(object sender, EventArgs e)
      {
              Page.ClientScript.GetCallbackEventReferenc e(this, "","", "");
      }
      protected void Button1_Click(object sender, EventArgs e)
      {
              Response.Write("");
      }
        void ICallbackEventHandler.RaiseCallbackEvent(String eventArgument)
      {
      }
        string ICallbackEventHandler.GetCallbackResult()
      {
              return "Data from server...";
      }
}
方法:Page.ClientScript.GetCallbackEventReferenc e(this, "","", "");コールバック時に使用するJSスクリプトをページにインポートできるようにするためである.ここでは最も簡単な方法しか使われていない.目的は、ページにJSスクリプトをインポートするためだけであり、他の操作は実行する.インポートされたJSスクリプトにWebForm_があります.DoCallback()メソッド、私たちがコールバックを実現するのは主にこのメソッドによって実現されます.
次はWebForm_DoCallback()メソッドの原形:

function WebForm_DoCallback(eventTarget,eventArgument, eventCallback, 
                         context, errorCallback, useAsync);

eventTarget:           ,    :"__Page"   .
eventArgument:          ,              .         ,        

                                .            ,         :
           RaiseCallbackEvent(String eventArgument)   ,      ,     RaiseCallbackEvent(String eventArgument)             .

eventCallback:            ,   eventCallback        .         .  
                 :function callbackEvent(arg,context){......}.  ,              
           
GetCallbackResult()       .            .          
                  WebForm_DoCallback()    context  ,         ,        
                   ,         ,          javascript       .
                 ,    .
          :       .

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>    </title>
    <script type="text/javascript">
        function DoCallBack(arg,evt,context)
        {
            WebForm_DoCallback("__Page",arg,evt,context,null,false);
        }
        function btnCallback(arg,context)
        {
            DoCallBack(arg,this.callbackEvent,context);
        }        
        functioncallbackEvent(arg,context)
        {
            alert(arg  + context);
        }
    </script>
</head>
<body>
    <form id="form1" runat="server"></form>
    <input type="button" value="Callback"    'Message')"/>
</body>
</html>
     WebForm_DoCallback          ,           .      :         ,
 aspx                form    ,                    
      .