ASP.NET2.0中控件的简单异步回调

【字号: 日期:2023-04-01浏览:23作者:雯心
;;虽然已经有了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");;}
相关文章: