ICallbackcanceleventhandlerr接口具体有什么用?

六步使用ICallbackEventHandler实现无刷新回调-中国学网-中国IT综合门户网站-提供健康,养生,留学,移民,创业,汽车等信息
六步使用ICallbackEventHandler实现无刷新回调
来源:互联网 更新时间: 4:28:44 责任编辑:鲁晓倩字体:
&&& AJAX技术所提倡的无刷新回调,在原来的技术中需要写大量的JavaScript代码或使用一些AJAX框架,使得开发效率和可维护性大大降低。其实ASP.NET2.0中,已经提供了这样的接口,这就是ICallbackEventHandler。&&& 关于ICallbackEventHandler网上已经有很多文章介绍了,这篇实为画蛇添足。
ICallbackEventHandler存在于System.Web.UI中,我们先做一个非常简单的例子来试用一下。
&& 第一步,在VS2005中建立一个新的WEB窗件。&& 第二步,在ASPX中,放上一段HTML代码(如下):
1&body&2&&& &form id="form1" runat="server"&3&&& &div&4&&&&&&& &button onclick="CallServer()"&CallServer&/button&5&&& &/div&6&&& &/form&7&/body&
&& 第三步,然后在&HEAD&&/HEAD&中放入一段JavaScript脚本:
&1 &script type="text/javascript"&&2&&&& function CallServer()&3&&&& {&4&&&&&&&& var product = "测试";&5&&&&&&&& &%= ClientScript.GetCallbackEventReference(this, "product", "ReceiveServerData",null)%&;&6&&&& }&7&&&& &8&&&& function ReceiveServerData(rValue)&9&&&& {10&&&&&&&& alert(rValue);11&&&& }12 &/script&&
&& 第四步,在此ASPX的后台CS代码中,继承ICallbackEventHandler接口,并实现接口中的两个方法:&ICallbackEventHandler.GetCallbackResult() &&& 和&ICallbackEventHandler.RaiseCallbackEvent(string eventArgument)
相关文章:
上一篇文章:下一篇文章:
最新添加资讯
24小时热门资讯
Copyright © 2004- All Rights Reserved. 中国学网 版权所有
京ICP备号-1 京公网安备02号抽象类和接口有什么区别
[问题点数:20分,结帖人xiaoyuanyuan2009]
抽象类和接口有什么区别
[问题点数:20分,结帖人xiaoyuanyuan2009]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2016年7月 .NET技术大版内专家分月排行榜第一
2016年6月 .NET技术大版内专家分月排行榜第二2016年3月 .NET技术大版内专家分月排行榜第二2016年1月 .NET技术大版内专家分月排行榜第二2015年12月 .NET技术大版内专家分月排行榜第二2015年2月 .NET技术大版内专家分月排行榜第二2015年1月 .NET技术大版内专家分月排行榜第二2014年11月 .NET技术大版内专家分月排行榜第二2014年5月 .NET技术大版内专家分月排行榜第二2014年4月 .NET技术大版内专家分月排行榜第二2012年2月 多媒体/设计/Flash/Silverlight 开发大版内专家分月排行榜第二
2013年 总版技术专家分年内排行榜第一
2014年 总版技术专家分年内排行榜第三
2016年7月 .NET技术大版内专家分月排行榜第一
2016年6月 .NET技术大版内专家分月排行榜第二2016年3月 .NET技术大版内专家分月排行榜第二2016年1月 .NET技术大版内专家分月排行榜第二2015年12月 .NET技术大版内专家分月排行榜第二2015年2月 .NET技术大版内专家分月排行榜第二2015年1月 .NET技术大版内专家分月排行榜第二2014年11月 .NET技术大版内专家分月排行榜第二2014年5月 .NET技术大版内专家分月排行榜第二2014年4月 .NET技术大版内专家分月排行榜第二2012年2月 多媒体/设计/Flash/Silverlight 开发大版内专家分月排行榜第二
2016年7月 .NET技术大版内专家分月排行榜第一
2016年6月 .NET技术大版内专家分月排行榜第二2016年3月 .NET技术大版内专家分月排行榜第二2016年1月 .NET技术大版内专家分月排行榜第二2015年12月 .NET技术大版内专家分月排行榜第二2015年2月 .NET技术大版内专家分月排行榜第二2015年1月 .NET技术大版内专家分月排行榜第二2014年11月 .NET技术大版内专家分月排行榜第二2014年5月 .NET技术大版内专家分月排行榜第二2014年4月 .NET技术大版内专家分月排行榜第二2012年2月 多媒体/设计/Flash/Silverlight 开发大版内专家分月排行榜第二
2013年 总版技术专家分年内排行榜第一
2014年 总版技术专家分年内排行榜第三
2016年7月 .NET技术大版内专家分月排行榜第一
2016年6月 .NET技术大版内专家分月排行榜第二2016年3月 .NET技术大版内专家分月排行榜第二2016年1月 .NET技术大版内专家分月排行榜第二2015年12月 .NET技术大版内专家分月排行榜第二2015年2月 .NET技术大版内专家分月排行榜第二2015年1月 .NET技术大版内专家分月排行榜第二2014年11月 .NET技术大版内专家分月排行榜第二2014年5月 .NET技术大版内专家分月排行榜第二2014年4月 .NET技术大版内专家分月排行榜第二2012年2月 多媒体/设计/Flash/Silverlight 开发大版内专家分月排行榜第二
本帖子已过去太久远了,不再提供回复功能。sunhoy 的BLOG
用户名:sunhoy
文章数:16
访问量:19150
注册日期:
阅读量:5863
阅读量:12276
阅读量:319340
阅读量:1030763
51CTO推荐博文
&& & &最近在做一个项目,有一个页面用到异步刷新,因为不想用updatepanel处理,就想到了.net自带的ICallbackEventHandler接口,在这里简单的对照msdn写了一个列子。
&& & &既然要异步,那么肯定要手动在前台写部分js了,既然是交互,那么传值这一步是少不了的了,显然首先要有一个调取的页面元素值得方法 &&
function&LookUpStock()&{&&&&&&var&lb&=&document.getElementById(&ListBox1&);&&&&&&var&product&=&lb.options[lb.selectedIndex].&&&&&&CallServer(product,&&&);&&}&
那么既然是异步更新数据,那么修改后的值肯定是js进行操作的了,这里就添加了一个返回值的js方法
function&ReceiveServerData(rValue)&{&&&&&&document.getElementById(&ResultsSpan&).innerHTML&=&rV&&}&
前台页面的html内容如下:
&xmlns=&http://www.w3.org/1999/xhtml&&&&&id=&Head1&&runat=&server&&&&&Client&Callback&Example&&&&&type=&text/ecmascript&&&&&&&&&function&LookUpStock()&{&&&&&&&&&&&&var&lb&=&document.getElementById(&ListBox1&);&&&&&&&&&&&&var&product&=&lb.options[lb.selectedIndex].&&&&&&&&&&&&CallServer(product,&&&);&&&&&&&&}&&&&&&&&&&function&ReceiveServerData(rValue)&{&&&&&&&&&&&&document.getElementById(&ResultsSpan&).innerHTML&=&rValue;&&&&&&&&}&&&&&&&&&&&&&id=&form1&&runat=&server&&&&&&&&&&&&&&&&ID=&ListBox1&&Runat=&server&&&&&&&&&&&&&&&&&&&&&&&&&&&&type=&Button&&onclick=&LookUpStock()&Look&Up&Stock&&&&&&&&&&&&&&&&&&&&&&&&&&Items&in&stock:&&id=&ResultsSpan&&runat=&server&&&&&&&&&&&&&&&&&&&&&&&&&
public&partial&class&Default2&:&System.Web.UI.Page,System.Web.UI.ICallbackEventHandler&{&&&&&protected&System.Collections.Specialized.ListDictionary&&&&&&protected&String&returnV&&&&&protected&void&Page_Load(object&sender,&EventArgs&e)&&&&&{&&&&&&&&&String&cbReference&=&&&&&&&&&&&&&Page.ClientScript.GetCallbackEventReference(this,&&&&&&&&&&&&&&arg&,&&ReceiveServerData&,&&context&);&&&&&&&&&String&callbackS&&&&&&&&&callbackScript&=&&function&CallServer(arg,&context)&&+&&&&&&&&&&&&&&{&&&+&cbReference&+&&;}&;&&&&&&&&Page.ClientScript.RegisterClientScriptBlock(this.GetType(),&&&&&&&&&&&&&&CallServer&,&callbackScript,&true);&&&&&&&&&&catalog&=&new&System.Collections.Specialized.ListDictionary();&&&&&&&&&catalog.Add(&monitor&,&12);&&&&&&&&&catalog.Add(&laptop&,&10);&&&&&&&&&catalog.Add(&keyboard&,&23);&&&&&&&&&catalog.Add(&mouse&,&17);&&&&&&&&&&ListBox1.DataSource&=&&&&&&&&&&ListBox1.DataTextField&=&&key&;&&&&&&&&&ListBox1.DataBind();&&&&&&}&&&&&&public&void&RaiseCallbackEvent(String&eventArgument)&&&&&{&&&&&&&&&if&(catalog[eventArgument]&==&null)&&&&&&&&&{&&&&&&&&&&&&&returnValue&=&&-1&;&&&&&&&&&}&&&&&&&&&else&&&&&&&&&{&&&&&&&&&&&&&returnValue&=&catalog[eventArgument].ToString();&&&&&&&&&}&&&&&}&&&&&&&public&String&GetCallbackResult()&&&&&{&&&&&&&&&return&returnV&&&&&}&}&
&本文出自 “” 博客,请务必保留此出处
了这篇文章
类别:未分类┆阅读(0)┆评论(0)使用ICallbackEventHandler接口实现轻量级的Ajax效果_ASP.NET技巧_
使用ICallbackEventHandler接口实现轻量级的Ajax效果
来源:人气:180
使用ICallbackEventHandler接口实现轻量级的效果1,网上关于ICallbackEventHandler的实现效果比较多,之所以继续写关于这个接口的使用有几个原因:(1)时间长了,容易忘记这个接口该怎么使用,肯定又要去搜索。(2)搜索出一堆别人的博客,看着别人写的不舒坦,不爽,所以自己按自己的想法想怎么写就怎么写。(3)看到自己写的博客,几乎很容易就立马想起来当时怎么使用的,很快就知道怎么使用了。(4)还有个原因就是,最近项目不紧,也不知道学点啥,就随便敲几行字。2,ICallbackEventHandler接口弥补了Ajax框架的不足!Ajax框架比较大,会在前台生成很多的Js代码。而ICallbackEventHandler接口却没有那么麻烦,他的逻辑,也就是前台控件触发(click,doubleclick,mouver,blur,focus),不管哪种触发方式,让他指定执行前台的一个Js方法(该方法是在后台Page_load使用RegisterClientScrtBlock()方法注册到前台)。然后这个Js方法会执行后台的一个方法,后台根据参数经过业务处理,将处理结果赋值给一个属性,然后后台回调方法中将这个属性的值返回,页面前台早已注册好的方法便会根据这个返回值进行相关处理。3,根据这个逻辑,我写了一个小的Demo,根据用户输入的手机号,判断当前手机号是否已经注册。(1),前台HTML代码&html ns="http://www.w3.org/1999/xhtml"&&head runat="server"&
&title&&/title&
&script src="Scripts/jquery-1.4.1.min.js" type="text/script"&&/script&
&script type="text/"&
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"&
名:&: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&
&/form&&/body&&/html&(2),后台代码public partial class _Default : System.Web.UI.Page,ICallbackEventHandler
otected 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 _CallBackR
public void RaiseCallbackEvent(string eventArgument)
if (eventArgument=="")
_CallBackResult = "手机号不能为空";
//自己查去吧
if (eventArgument=="")
_CallBackResult = "当前手机号已经注册";
}4,页面一加载,首先执行后台的Page_Load事件,然后callServerEvent这个方法就注册到前台了,前台页面一生成,便给手机号那个文本框注册了,失去焦点事件,失去焦点的事件里面执行callServerEvent()方法(传入俩个参数),调用后台的RaiseCallbackEvent(string eventArgument)方法,该方法经过业务逻辑处理,赋值给_CallBackResult属性,GetCallbackResult()方法将处理结果返回,同时调用前台方法receiveServerDataNew(),该方法便根据后台的处理结果,进行页面处理。
优质网站模板

我要回帖

更多关于 canceleventhandler 的文章

 

随机推荐