利用ASP.NET實現無重新整理更新頁面 (1)

來源:互聯網
上載者:User

 在ASP.NET開發過程中我們會遇到這類情況:為了擷取伺服器端狀態而在提交整個頁面,造成了很大的浪費。我們知道現在流行的AJAX架構能夠實現局部頁面更新,避免整個頁面重新整理。其實ASP.NET也提供了類似的解決方案。

在 ASP.NET 網頁的預設模型中,使用者會與頁互動,單擊按鈕或執行導致回傳的一些其他動作。此時將重新建立頁及其控制項,並在伺服器上運行頁代碼,且新版本的頁被呈現到瀏覽器。但是,在有些情況下,需要從用戶端運行伺服器代碼,而不執行回傳。如果頁中的用戶端指令碼維護一些狀態資訊(例如,局部變數值),那麼發送頁和擷取頁的新副本就會損壞該狀態。此外,頁回傳會導致處理開銷,這會降低效能,且會讓使用者不得不等待處理並重新建立頁。

若要避免丟失用戶端狀態並且不導致伺服器往返的處理開銷,可以對 ASP.NET 網頁編碼,使其能執行用戶端回調。在用戶端回調中,用戶端指令碼函數會向 ASP.NET 網頁發送一個請求。該網頁運行其正常生命週期的修改版本 — 初始化頁並建立其控制項和其他成員,然後調用特別標記的方法。該方法執行代碼中編寫的處理過程,然後向瀏覽器返回可由另一用戶端指令碼函數讀取的值。在此過程中,該頁一直駐留在瀏覽器中。

下面給出的是一個簡單的例子:
點擊button控制項,在文字框內顯示伺服器端時間。如所示:

相關頁面代碼如下:

1<div>
2        <input type="text" id="txtTime" runat="server" readonly="readonly" />
3        <input type="button" id="btnGetTime" value="Get" runat="server" />
4    </div>

建立實現用戶端回調的 ASP.NET 頁與建立任何 ASP.NET 頁類似,但也有如下這些區別。頁的伺服器代碼必須實現ICallbackEventHandler介面。該介面需要RaiseCallbackEvent方法和GetCallbackResult方法。
1. RaiseCallbackEvent方法處理該事件
2. GetCallbackResult方法返回回調的結果

具體代碼如下:

 1 protected void Page_Load(object sender, EventArgs e)
 2     {
 3         txtTime.Value = DateTime.Now.ToString();
 4 
 5         string callBackRef = ClientScript.GetCallbackEventReference(this, string.Empty, "getTime", string.Empty);
 6         btnGetTime.Attributes["onclick"] = callBackRef;
 7     }
 8 
 9     public string GetCallbackResult()
10     {
11         return DateTime.Now.ToString();
12     }
13 
14     public void RaiseCallbackEvent(string eventArgument)
15     {
16         //
17      }


另外,我們還需要實現用戶端回調javascript函數代碼,用來處理響應結果,實現局部頁面更新。代碼如下:

1 function getTime() {
2     document.getElementById("txtTime").value = arguments[0];
3 }

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.