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

首頁 > 學院 > 開發設計 > 正文

使用ICallbackEventHandler接口實現輕量級的Ajax效果

2019-11-17 02:00:20
字體:
來源:轉載
供稿:網友

使用ICallbackEventHandler接口實現輕量級的Ajax效果

1,網上關于ICallbackEventHandler的實現效果比較多,之所以繼續寫關于這個接口的使用有幾個原因:(1)時間長了,容易忘記這個接口該怎么使用,肯定又要去搜索。(2)搜索出一堆別人的博客,看著別人寫的不舒坦,不爽,所以自己按自己的想法想怎么寫就怎么寫。(3)看到自己寫的博客,幾乎很容易就立馬想起來當時怎么使用的,很快就知道怎么使用了。(4)還有個原因就是,最近項目不緊,也不知道學點啥,就隨便敲幾行字。

2,ICallbackEventHandler接口彌補了Ajax框架的不足!Ajax框架比較大,會在前臺生成很多的Js代碼。而ICallbackEventHandler接口卻沒有那么麻煩,他的邏輯,也就是前臺控件觸發(click,doubleclick,mouSEOver,blur,focus),不管哪種觸發方式,讓他指定執行前臺的一個Js方法(該方法是在后臺Page_load使用RegisterClientScriptBlock()方法注冊到前臺)。然后這個Js方法會執行后臺的一個方法,后臺根據參數經過業務處理,將處理結果賦值給一個屬性,然后后臺回調方法中將這個屬性的值返回,頁面前臺早已注冊好的方法便會根據這個返回值進行相關處理。

3,根據這個邏輯,我寫了一個小的Demo,根據用戶輸入的手機號,判斷當前手機號是否已經注冊。

(1),前臺HTML代碼

<html xmlns="http://www.w3.org/1999/xhtml"><head runat="server">    <title></title>    <script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>    <script type="text/Javascript">        function receiveServerDataNew(returnVal) {            $("#warn").html(returnVal);        }        $(function () {            $("input[id*='TB_MobilePhone']").blur(function () {                var mobilePhone = $("input[id*='TB_MobilePhone']").val();                callServerEvent(mobilePhone, "");            });        })    </script></head><body>    <form id="form1" runat="server">    <div>    姓    名:<asp:TextBox ID="TB_UserName" runat="server"></asp:TextBox><br />    密    碼:<asp:TextBox ID="TB_HiddenCode" runat="server"></asp:TextBox><br />    手機號:<asp:TextBox ID="TB_MobilePhone" runat="server"></asp:TextBox><span id="warn" style=" color:Red";></span>    </div>    </form></body></html>

(2),后臺代碼

public partial class _Default : System.Web.UI.Page,ICallbackEventHandler    {        PRotected void Page_Load(object sender, EventArgs e)        {            //獲取一個對客戶端函數的引用;調用該函數時,將啟動一個對服務器端事件的客戶端回調。此重載方法的客戶端函數包含指定的控件、參數、客戶端腳本和上下文            String cbReference = Page.ClientScript.GetCallbackEventReference(this, "arg", "receiveServerDataNew", "context");            String callbackScript = "function callServerEvent(arg, context)" + "{ " + cbReference + ";}";            //往前臺注冊腳本            Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "callServer", callbackScript, true);        }        private string _CallBackResult = "";         public string GetCallbackResult()        {            return _CallBackResult;        }        public void RaiseCallbackEvent(string eventArgument)        {            if (eventArgument=="")            {                _CallBackResult = "手機號不能為空";            }            //自己查數據庫去吧            if (eventArgument=="18866668888")            {                _CallBackResult = "當前手機號已經注冊";            }        }    }

4,頁面一加載,首先執行后臺的Page_Load事件,然后callServerEvent這個方法就注冊到前臺了,前臺頁面一生成,便給手機號那個文本框注冊了,失去焦點事件,失去焦點的事件里面執行callServerEvent()方法(傳入倆個參數),調用后臺的RaiseCallbackEvent(string eventArgument)方法,該方法經過業務邏輯處理,賦值給_CallBackResult屬性,GetCallbackResult()方法將處理結果返回,同時調用前臺方法receiveServerDataNew(),該方法便根據后臺的處理結果,進行頁面處理。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 岫岩| 南江县| 广东省| 团风县| 阿尔山市| 磐石市| 马公市| 会泽县| 南阳市| 特克斯县| 宁阳县| 璧山县| 理塘县| 大荔县| 景洪市| 墨竹工卡县| 临邑县| 柘城县| 刚察县| 凭祥市| 桃源县| 南投市| 洪湖市| 滨州市| 云龙县| 凌源市| 富源县| 海晏县| 宁南县| 丹棱县| 六枝特区| 西盟| 西乡县| 炉霍县| 霍山县| 西乌| 赞皇县| 天门市| 孝昌县| 石阡县| 山西省|