国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > AJAX > 正文

不用組件實現Ajax效果

2024-09-01 08:26:17
字體:
來源:轉載
供稿:網友

現在.NET的Ajax組件確實不少了,微軟的ajax extensions用起來很方便,一個UpdatePanel就可以搞定一切。不過,可能有些朋友更愿意自己來寫。那么在.NET里,你是否知道ICallbackEventHandler呢?

大家應該都知道ASP.NET頁面調用時的幾種方式:Postback/Cross-page posting/Server transfer/Callback,如果你還不太了解,你可以看看MSDN:How to: Determine How ASP.NET Web Pages Were Invoked

現在要說的,就是Callback這種調用方式。
簡單的說,使用Callback可以得到你平常看到那么Ajax效果,即不刷新整個頁面,只更新其中一個部分。

使用Callback,只需要做以下4步:

1、在你的頁面中繼承System.Web.UI.ICallbackEventHandler接口

public partial class _Default : System.Web.UI.Page, System.Web.UI.ICallbackEventHandler
{
protected void Page_Load(object sender, EventArgs e)
{
}
#region ICallbackEventHandler Members
public string GetCallbackResult()
{
}
public void RaiseCallbackEvent(string eventArgument)
{
}
#endregion
}

如果你沒有使用code-behind,那你也可以在aspx頁面頂部加入下面的代碼:

<%@ Implements Interface="System.Web.UI.ICallbackEventHandler" %>

2、在前臺寫一段自定義的javascript,更新頁面

這一段javascript用來更新頁面的某個局部,就像你平常操作的一樣,寫些document.getElementById("xxx").innerHTML="working on your request...."。

你可能有些迷糊,就得到了嗎?連個什么XMLHttpRequest都沒有哩……

3、在Page_Load中再注冊一段javascript

string script = Page.Clientscript.GetCallbackEventReference(this, "arg", "GetFlag", "");
Page.Clientscript.RegisterClientscriptBlock(this.GetType(), .......//省略了一大串

上面的GetCallbackEventReference是用來得到客戶端函數的引用,發起一個callback到服務器端的,你不必知道詳細內容。

你只需要了解:

  • 第一個參數填this,用來handle客戶端的callback的,它必須繼承ICallbackEventHandler接口并提供RaiseCallbackEvent方法,我們已經在繼承了這個接口,上面第一點中的代碼也有RaiseCallbackEvent方法,只是還沒有具體寫內容呢。
  • 第二個參數就是那個 從客戶端傳到服務器端的參數。如果你想要注冊的檢查用戶是否可用,那么這里的值就是用戶輸的那個值。
  • 第三個參數是前臺的javascript函數名,在第二步中我們寫的名字是:GetFlag。當數據好了,這個javascript函數就會用到。
  • 第四個參數一般用不上。

返回值:一個函數的名字,是客戶端調用的函數名。這個函數會調用到服務器端了。

4、調用你的函數。

上面一定是 onclick="callServer()"嗎?呵呵,這要看你了,你在Page.Clientscript.RegisterClientscriptBlock注冊的什么javascript函數名字,就是什么名字了。(在第3步的第二行code中)

已經完了。如果你還是一頭霧水,沒關系,下面看一個實例

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 大石桥市| 长汀县| 浦城县| 霍州市| 阳谷县| 南陵县| 汉沽区| 夏河县| 松溪县| 汤原县| 驻马店市| 大理市| 蒙城县| 西畴县| 阿勒泰市| 航空| 陈巴尔虎旗| 临汾市| 堆龙德庆县| 固阳县| 雷波县| 孟津县| 福海县| 治县。| 玉龙| 泰宁县| 安义县| 雅安市| 白沙| 山阴县| 汉沽区| 天津市| 天镇县| 长子县| 勐海县| 望江县| 天柱县| 乌鲁木齐县| 莒南县| 衡东县| 韶关市|