在.NET 2.0正式版中开发无刷新页面(http://searchwebservices.techtarget.com.cn)2007-05-14 23:42在已经发布的 ASP.NET2.0 中,无刷新页面开发相关部分同 beta2 有不少改动。而且在越来越多的 Ajax 开发包被开发出来的情况下, ASP.NET2.0 自带的无刷新页面技术没有被很多人了解,甚至不少人认为该功能有些“鸡肋”。但如果我们仅仅是在程序中加入很少部分的 Ajax 特性, Atlas 、 Ajax.Net 等就显得有些“杀鸡用牛刀”的感觉了。而且,我认为使用 ASP.NET2.0 提供的方法进行开发并不很复杂,相反,使用很少的代码就可以做出来很棒的效果!
  下面我来一步一步的带大家开发无刷新的页面!

  第一步:实现 ICallbackEventHandler 接口

  ICallbackEventHandler接口位于System.Web.UI命名空间下。在beta2时,ICallbackEventHandler只包含一个RaiseCallbackEvent方法,即处理回调事件,又返回处理结果。在正式版中,它变成了包含GetCallbackResult和RaiseCallbackEvent两个成员方法,第一个用来返回回调事件的结果,第二个用来出来回调事件。这个变化主要是为了编写Web控件而做的改动,具体可以看一下GridView等控件中的实现代码。

  建立一个 Web 网站,我们来修改 default.aspx.cs 文件:

  1 public partial class _Default : System.Web.UI.Page, ICallbackEventHandler
  1 private string str;
  2 public void RaiseCallbackEvent(string eventArgument)
  3 {
  4 //可以根据传递的参数不同,调用不同的处理逻辑
  5 str = "从服务器端返回的内容:" + eventArgument;
  6 }
  7
  8 public string GetCallbackResult()
  9 {
  10 return str;
  11 }
  12

  第二步:注册回调方法

  我们在 default.aspx 页面中添加一个 TextBox ,一个 Label 和一个 Html 控件 Button ,并给 Button 添加 onclick 事件:

1 <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>  
2 <input id="Button1" type="button" value="提交到Label1" οnclick="CallServer(TextBox1, Label1)"/><br/>  
3 <asp:Label ID="Label1" runat="server" Text="Label1:"></asp:Label>  
4

1        <script type="text/javascript">   
2           //由button调用  
3           function CallServer(inputcontrol, context)  
4           {   
5                context.innerHTML = "Loading";  
6                arg = inputcontrol.value;  
7                //注册回调方法  
8                <%= ClientScript.GetCallbackEventReference(this, "arg", "ReceiveServerData", "context")%>;   
9            }  
10            //在回调方法中注册的接收返回结果的函数  
11            function ReceiveServerData(result, context)   
12            {  
13                context.innerHTML = result;  
14            }  
15        </script>  
16

  在已经发布的 ASP.NET2.0 中,无刷新页面开发相关部分同 beta2 有不少改动

  好了,一个无刷新的页面就开发完了,它可以将你在 TextBox 中输入的文字,通过服务器代码写回到页面的 Label 中。是不是很简单?你可以运行一下你的程序看看效果啦!

  下面我们来分析一下这些代码。

  首先,我们看

<%= ClientScript.GetCallbackEventReference(this, "arg", "ReceiveServerData", "context")%>;

  ClientScript是System.Web.UI.Page对象的一个属性,它是System.Web.UI.ClientScriptManager对象。用于管理客户端脚本,GetCallbackEventReference方法用于注册一个服务器端事件的客户端回调。它的第四个参数“Context”非常重要,但在MSDN中并没有相关的例子和详细的说明。在我上面给的代码中可以看到,调用CallServer方法时,传递的Context参数就是Label1,而ReceiveServerData的第二个参数“Context”就是被传递过来的Label1。在我的例子中,Context被我用于设定一个用来显示服务端返回结果的控件。其实,你可以将任意的对象赋值给Context,它都会被传递给本地端处理回调返回结果的函数,这样,你就可以根据调用前指定的“上下文”灵活的操作返回结果了!在我给出的完整例子中,你可以看到一个使用Context做的无刷新显示GridView的例子。

  在这里我要说个题外话,Context这么重要的参数在MSDN中不但没有详细的说明,而且VS2005中文正式版MSDN中关于回调的例子竟然还是beta2时的实现!这个版本的MSDN可以说是我用过的版本中品质最差的。不过现在的MSND可以用“相当”庞大来形容,出错也是在所难免的,希望下个版本的MSND会好一些。

  OK,在ASP.NET 2.0中开发具有Ajax特性的东东不难吧!其实就是两步:

  1、 在Server端实现ICallbackEventHandler接口,在接口包含的方法中根据传递的参数分别调用不同的处理方法,然后返回结果;

  2、 在Client端注册回调函数(当然你也可以在Server端注册),然后实现处理回调结果的函数。其中,如果对Context能干灵活运行,你就可以做出非常好的效果了。

  

转载于:https://www.cnblogs.com/dotnet010/articles/958533.html

asp.net实现无刷新,无须AJAX相关推荐

  1. 无刷新删除 Ajax,JQuery

    无刷新删除 Ajax,JQuery 1.数据库用上面的,增加一个 DeleteById 的SQL方法 delete from T_Posts where Id = @Original_Id 2.设置处 ...

  2. Asp.Net实现无刷新文件上传并显示进度条(非服务器控件实现)

    相信通过Asp.Net的服务器控件上传文件在简单不过了,通过AjaxToolkit控件实现上传进度也不是什么难事,为什么还要自己辛辛苦苦来实现呢?我并不否认"拿来主义",只是我个人 ...

  3. ASP.NET—015:ASP.NET中无刷新页面实现

    原文作者:杨友山 原文地址:http://blog.csdn.net/yysyangyangyangshan/article/details/39679823 前面也说过在asp.net中前后前交互的 ...

  4. ASP.Net中无刷新执行Session身份验证

    在写一个客户的B/S结构应用程序时,突然发现一个技巧,不知道是否是MS的一个BUG,给相关的有研究的朋友原先考虑写一个检查Session的类,Session失效后,必须转向登陆页面,可每一个调用该类的 ...

  5. asp.net实现无刷新ajax技术登录界面

    首先声明我是asp.net的初学者,有好多技术问题都不会,希望以后看到博客的技术大牛们,看到不对的和不好的,都能够提出: 1.首先用visual studio 2012新建一个asp.net网站,添加 ...

  6. ASP.NET DROPDOWNLIST无刷新联动(中文URL参数处理)

    请求页的两个下拉框触发事件,在传递参数的时候要把参数escape()一下,如果未对参数进行处理,且你传递的是一个中文参数,那么在服务页接受这个参数的时候就会接受未"乱码"(其实应该 ...

  7. [转]无刷新的ASP.NET AJAX GRIDVIEW排序

    有幸看到一个无刷新的AJAX GRIDVIEW排序效果,感觉不错,代码也简单,方便!特奉上来给各位博友参考! 下载源码 本文来源:http://www.cnblogs.com/witer666/arc ...

  8. 发现asp.net 2.0 在MSDN中的多个BUG 关于无刷新窗体的

    asp.net实现无刷新窗体的关键接口是ICallbackEventHandler,在MSDN对无刷新窗体的c#示例代码中存在了多个明显的错误. 原MSDN示例地址:ms-help://MS.MSDN ...

  9. ajax 页面无刷新,Ajax的页面无刷新实现详解(附代码)

    这次给大家带来Ajax的页面无刷新实现详解(附代码),Ajax页面无刷新实现的注意事项有哪些,下面就是实战案例,一起来看一下. ajax (ajax开发) AJAX即"Asynchronou ...

最新文章

  1. 将数据库表中数据转为XML
  2. dellr320故障_dell r320服务器,idrac问题
  3. bugfree3.0.2版本升级--更新版
  4. 袁隆平等专家联袂直播 启动农民丰收节交易会消费季活动
  5. 文件 在线压缩 技术
  6. c语言ascii码表_新手小白整理C语言笔记备忘,带你十分钟理解C语言
  7. Entity framework WhereInExtension
  8. 谷歌guava_Google Guava MultiMaps
  9. 在GPU上运行,性能是NumPy的11倍,这个Python库你值得拥有
  10. 在TensorFlow中使用pipeline加载数据
  11. zabbix-通过自动发现添加主机
  12. “开房信息泄露案”开审,“B/S架构”酒店管理系统终成酒店大患
  13. The JSR-133 Cookbook for Compiler Writers 中英对照版翻译
  14. 计算机测色配色应用,计算机测色及配色.doc
  15. PHP支付接口对接curl Post方式提交详解
  16. 力特usb转串口线驱动 linux,力特usb转串口驱动下载
  17. html header设置语言,html5 header标签 html header css布局教程
  18. 计算机休眠设置xp系统,【xp怎么让电脑不休眠】xp怎么设置电脑不休眠_xp电脑休眠设置...
  19. 如何用Hexo搭建个人博客网站
  20. 为什么有斯坦福计算机科学博士学位的你找不到工作?

热门文章

  1. robot 用AP连PC
  2. php memcached 队列,redis获取所有队列_memcached
  3. python画害羞的表情_用Python把你的朋友变成表情包
  4. php连接mysql开发环境_PHP开发环境搭建及常用的数据库操作
  5. AD转换实验 编写程序利用ADC0804 AD转换器采集电位器的模拟电压,将采集到的数字量在程序中换算成实际采集的模拟电压,并用数码管显示所采集的实际模拟电压值。(如:AD转换后的数字量为128,则
  6. 如何在代码中让按钮高亮_各种博客的代码高亮是如何实现的
  7. Java 获取 URL 响应头信息
  8. 使用foreach循环遍历Collection集合
  9. 正则表达式的运算符优先级
  10. java - 猴子吃桃