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.結果: