国产探花免费观看_亚洲丰满少妇自慰呻吟_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(),該方法便根據后臺的處理結果,進行頁面處理。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 虹口区| 凉山| 新津县| 炎陵县| 高阳县| 晋宁县| 虞城县| 邵武市| 泽普县| 乌鲁木齐县| 康平县| 青龙| 金秀| 漳州市| 阳东县| 都安| 营口市| 浏阳市| 永川市| 犍为县| 常德市| 巴中市| 瑞昌市| 财经| 大竹县| 利辛县| 读书| 全椒县| 博客| 叶城县| 高清| 赣州市| 上蔡县| 河北区| 城市| 南涧| 商洛市| 彭州市| 常熟市| 伊宁市| 弥渡县|