日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

ASP.NET 2.0中控件的简单异步回调

發(fā)布時(shí)間:2023/12/18 asp.net 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ASP.NET 2.0中控件的简单异步回调 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

雖然已經(jīng)有了ASP.NET AJAX了,最近學(xué)習(xí)ASP.NET控件的時(shí)候,逐步理解了原始的控件異步回調(diào)(代碼取自《ASP.NET 2.0 高級編程》): 首先,在Render事件中添加好一個(gè)事件。

protected override void RenderContents(HtmlTextWriter output) {  output.RenderBeginTag(HtmlTextWriterTag.Div);  output.AddAttribute(HtmlTextWriterAttribute.Type, "text");  output.AddAttribute(HtmlTextWriterAttribute.Id, this.ClientID);  output.AddAttribute(HtmlTextWriterAttribute.Name, this.ClientID);  output.AddAttribute(HtmlTextWriterAttribute.Value, this.Text);  output.AddAttribute("OnBlur", "ClientCallback();");  this.AddAttributesToRender(output);  output.RenderBeginTag(HtmlTextWriterTag.Input);  output.RenderEndTag();  output.RenderEndTag(); }


這里最重要的就是output.AddAttribute("OnBlur","ClientCallback();");

然后在OnPreRender事件中,添加如下代碼:

protected override void OnPreRe nder(EventArgs e) { //Page.ClientScript.RegisterClientScriptInclude("UtilityFunctions", "JScript.js"); Page.ClientScript.RegisterStartupScript(typeof(Page), "ControlFocus", "document.getElementById('" + this.ClientID + "').focus();", true); Page.ClientScript.RegisterStartupScript(typeof(Page),"ClientCallback","function ClientCallback() {"+"args=document.getElementById('"+this.ClientID+"').value;"+Page.ClientScript.GetCallbackEventReference(this,"args","CallbackHandler",null,"ErrorHandler",true)+"}"); //向服務(wù)器發(fā)送請求,由服務(wù)器端生成回調(diào)的客戶端腳本。 }

也就是在服務(wù)器端生成客戶端代碼,注意最后一個(gè)方法GetCallbackEventReference,我理解的是在服務(wù)器端捕捉了客戶端的請求之后,生成相應(yīng)的客戶端腳本,在服務(wù)器端回調(diào)的時(shí)候,客戶端決定用什么函數(shù)處理回調(diào)和錯(cuò)誤。

服務(wù)器端實(shí)現(xiàn)接口的一個(gè)方法,也就是接收到客戶端的請求之后,由服務(wù)器端先處理,然后再把結(jié)果和相應(yīng)代碼發(fā)回客戶端。

#region ICallbackEventHandler Members public string RaiseCallbackEvent(string eventArgument) {  int result;  if (!Int32.TryParse(eventArgument, out result))  throw new Exception("The method is not implemented."); return "Valid Data"; } #endregion

最后,在jscript.js文件中寫好相應(yīng)的回調(diào)處理函數(shù)即可:

var args; var ctx; function ValidateText(ctl) {  if(ctl.value=='')  { alert("Please enter a value"); ctl.focus();  } } function CallbackHandler(args,ctx) {  alert("The data is valid"); } function ErrorHandler(args,ctx) {  alert("The data is not a number"); }

轉(zhuǎn)載于:https://www.cnblogs.com/webnet/archive/2009/03/22/1418842.html

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

以上是生活随笔為你收集整理的ASP.NET 2.0中控件的简单异步回调的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。