ASP.NET2.0中控件的简单异步回调
;;虽然已经有了ASP.NET;AJAX了,最近学习ASP.NET控件的时候,逐步理解了原始的控件异步回调(代码取自《ASP.NET;2.0;高级编程》):;首先,在Render事件中添加好一个事件;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)+"}");;//向服务器发送请求,由服务器端生成回调的客户端脚本。;};也就是在服务器端生成客户端代码,注意最后一个方法GetCallbackEventReference,我理解的是在服务器端捕捉了客户端的请求之后,生成相应的客户端脚本,在服务器端回调的时候,客户端决定用什么函数处理回调和错误。;服务器端实现接口的一个方法,也就是接收到客户端的请求之后,由服务器端先处理,然后再把结果和相应代码发回客户端。;#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文件中写好相应的回调处理函数即可:;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");;}
相关文章:
热门推荐
- 小白必看toString(),String.valueOf,(String)强转
- 1.HTML5 的 Canvas 对象将改变 JavaScript 的使命
- 2.教你如何用Eclipse创建一个Maven项目
- 3.可以让IE假死的HTML代码是什么?
- 4.jQuery点击页面其他部分隐藏下拉菜单功能
- 5.vue中tab选项卡的实现思路
- 6.ASP编程点滴:包含文件
- 7.jQuery如何解决IE输入框不能输入的问题
- 8.Yii2.0 rules验证规则大全
- 9.打开网页的时候提示: Internet Explorer 无法打开 Internet站点已终止操作
- 10.Golang 使用gorm添加数据库排他锁,for update