ASP.NET2.0 CallBack 小筆記(1)

ASP.NET2.0 CallBack 小筆記(1)

自從Google帶起AJAX應用風潮之後,似乎不知道甚麼是AJAX的WEB工程師有點遜了。

幾乎每個Javascript都有提供非常簡單方式,而寫Web動不動就要來個AJAX一下。

有時候覺得程式設計師在這個挑剔年代實在很辛苦,要學的東西又多,時程又趕。

這個時候平時累積實力就很重要,如果不確實記錄下來,一定會忘記(天才不在此列><)。

好了廢話不多說,在ASP.NET 2.0要使用Callback技巧必須實作

System.Web.UI.Page,ICallbackEventHandler 這個介面。

不多說來貼Code

1.首先我們建立一個page如下:

   1:      <form id="form1" runat="server">
   2:      <div>
   3:          <asp:Label ID="Label2" runat="server" Text="Callback Model"></asp:Label>
   4:          <input id="Text1" type="text" /><input id="Button2" type="button" value="button"
   5:              runat="server" />
   6:              <br />
   7:          <asp:Label ID="Label3" runat="server" Text="Server Side :"></asp:Label>
   8:          <input id="Text2" type="text" /></div>
   9:      </form>

其中Button2是個關鍵,必須要設定為runat="server",不然下面Page_Load Method,Button2按鈕會抓不到。

2.要接收 Server 回傳資料的Javascript Code:

   1:      <script type="text/javascript">
   2:          function ReceiveServerData(data, context) {
   3:              document.getElementById("Text1").value = data;
   4:              document.getElementById("Text2").value = context;
   5:          }
   6:      </script>

3.CodeBind程式碼如下:

   1:  public partial class CallBackTest : System.Web.UI.Page,ICallbackEventHandler
   2:  {
   3:      protected void Page_Load(object sender, EventArgs e)
   4:      {
   5:          string cbReference = string.Empty;
   6:          //建立一段用來在client端啟動Callback動作的script
   7:          cbReference = Page.ClientScript.GetCallbackEventReference(this, "'arg'", "ReceiveServerData","'回傳給client資料'");
   8:          Button2.Attributes["onClick"] = cbReference;
   9:      }
  10:   
  11:      #region ICallbackEventHandler 成員
  12:   
  13:      string returnValue = string.Empty;
  14:   
  15:      public string GetCallbackResult()
  16:      {
  17:          return returnValue + ":" + DateTime.Now.ToString();
  18:      }
  19:   
  20:      public void RaiseCallbackEvent(string eventArgument)
  21:      {
  22:          returnValue = eventArgument;
  23:      }
  24:   
  25:      #endregion
  26:  }

從client端postback往後送,第一個會進入的Method就是RaiseCallbackEvent,從結果看到eventArgument參數傳入是'arg'。

4.Page.ClientScript.GetCallbackEventReference產生在Client的Code如下:



5.結果:

AJAX