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

首頁 > 開發(fā) > AJAX > 正文

編寫輕量ajax組件02--淺析AjaxPro

2024-09-01 08:28:15
字體:
供稿:網(wǎng)友

前言

  上一篇介紹了在webform平臺實現(xiàn)ajax的一些方式,并且實現(xiàn)一個基類。這一篇我們來看一個開源的組件:ajaxpro。雖然這是一個比較老的組件,不過實現(xiàn)思想和源碼還是值得我們學(xué)習(xí)的。通過上一篇的介紹,我們知道要調(diào)用頁面對象的方法,就是靠反射來實現(xiàn)的,關(guān)鍵是整個處理過程,包括反射調(diào)用方法、參數(shù)映射等。ajaxpro不僅在后臺幫我們實現(xiàn)了這個過程,在前臺也封裝了請求調(diào)用的方法,例如ajax的相關(guān)方法,用ajaxpro的方法就可以發(fā)送異步請求了,不需要自己封裝js或者使用js庫。接下來就對這個組件進行淺析。

一、ajaxpro的使用

  我們先來看這個組件如何使用。

  1. 注冊AjaxHandlerFactory

  在web.config里進行如下配置:

<httpHandlers> <add verb="POST,GET" path="ajaxpro/*.ashx" type="AjaxPro.AjaxHandlerFactory, AjaxPro"/></httpHandlers>

  簡單的說,請求的url符合 ajaxpro/*.ashx 格式的,都會被AjaxHandlerFactory處理,這是一個實現(xiàn)IHandlerFactory接口的工廠類,用來獲取IHandler處理程序。其中type的格式是:"名稱控件.類名稱,程序集名稱"。

  2. 在頁面類Page_Load事件進行注冊

protected void Page_Load(object sender, EventArgs e){ AjaxPro.Utility.RegisterTypeForAjax(typeof(AjaxProPage));}

  我們傳遞了本頁面對象的Type給ResisterTypoForAjax方法,這個方法用來在前臺注冊腳本,具體會調(diào)用當(dāng)前Page對象的RegisterClientScriptBlock進行注冊,所以.aspx文件中必須有一個<form runat="server"></form>,否則腳本將無法注冊。(這里傳遞了Type,實際也可以做到不用傳遞的,內(nèi)部通過HttpContext.Current.Handler.GetType().BaseType 也可以獲得這個類型)

  3.用AjaxMethod標(biāo)記方法  

[AjaxMethod]public List<string> GetList(string input1,string input2){ return new List<string> { input1, input2 };}

  AjaxMethod是一個標(biāo)記屬性,表示這個方法用于處理ajax請求,它最終通過反射執(zhí)行;它有幾個構(gòu)造函數(shù)對,對于有些需要緩存的數(shù)據(jù),可以設(shè)置緩存時間;如果我們的請求不需要使用Session,可以設(shè)置HttpSessionStateRequirement;如果請求需要異步,例如請求一個耗時的web服務(wù),也可以設(shè)置處理程序為異步狀態(tài)。

  方法的返回值可以是簡單的類型,也可以是復(fù)雜的類型;例如集合類型在前臺獲得就是一個數(shù)組。

  4.前臺調(diào)用

  后臺的配置和使用都非常簡單,接下來我們看前臺如何發(fā)起請求。

function GetList() { //var result = AjaxProNamespace.AjaxProPage.GetList("a", "b").value; //console.log(result); AjaxProNamespace.AjaxProPage.GetList("a", "b", function (result) {  console.log(result); });  }            
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 江陵县| 西畴县| 女性| 腾冲县| 平阳县| 华池县| 琼中| 莲花县| 红桥区| 龙泉市| 蒙山县| 手游| 右玉县| 社旗县| 增城市| 资阳市| 定安县| 新建县| 大城县| 连南| 铜梁县| 宿松县| 鹤庆县| 锡林郭勒盟| 赣州市| 尼玛县| 南陵县| 平度市| 会同县| 阜新| 辉南县| 巫山县| 孟津县| 岑溪市| 武功县| 凤山县| 务川| 乌兰浩特市| 宾川县| 保定市| 宜宾市|