前几天曾经发过一篇《ASP.NET AJAX(Atlas)和Anthem.NET——管中窥豹般小小比较》,Jeffrey Zhao说用ASP.NET AJAX中的UpdatePanel似乎不大好。我想了想确实如此,有些高射炮打蚊子的感觉。还有朋友希望我也能在比较中关照一下Ajax.NET Professional——同样是个ASP.NET平台上非常优秀的Ajax框架。

种种要求下,形成此文。本文将比较在ASP.NET AJAX(Atlas)、Anthem.NET和Ajax.NET Professional这三个知名ASP.NET上Ajax框架中实现客户端调用服务器端方法的实现。客户端调用服务器端方法是每一个Ajax框架都必须考虑的问题,非常具有代表性。在程序编写过程中,我也将抛弃掉某些框架中提供的“智能的”服务器端控件(例如ASP.NET AJAX的UpdatePanel),而完全用手工JavaScript和C#实现,力求创造出较为“公平”的比较环境。

由于本文侧重于“比较”,而不是“介绍”,所以对于基础知识都一笔带过。有需要详细了解程序实现,或是希望重现实验结果的朋友,可以下载本文附带的代码。

程序要实现的功能

程序功能很简单,却也足够典型:

用户点击页面上的某个<input>按钮
浏览器执行该按钮的客户端JavaScript事件处理函数
该JavaScript事件处理函数调用某服务器端方法
服务器端方法执行并返回当前时间
客户端JavaScript回调函数执行,将服务器端返回的时间显示在页面中一个<span>中
程序运行界面

由于这三个程序的界面、行为以及实现功能都完全一致,所以这里仅以ASP.NET AJAX(Atlas)版本的为例。下面是程序初始化之后的界面:

点击按钮,上面介绍的5个步骤将依次执行,最终得到如下图所示的结果,显示出服务器端时间:

ASP.NET AJAX(Atlas)版本的实现代码

首先是页面的HTML部分,注意ASP.NET AJAX(Atlas)独有的ScriptManager控件:

<asp:ScriptManager ID="ScriptManager1" runat="server" /><div>    <input type="button" value="Get Server Time" id="btnGetServerTime" οnclick="return btnGetServerTime_onclick()" />    <span id="result" /></div>然后是客户端JavaScript部分,注意用PageMethods.GetServerTime()这样的形式调用服务器端方法:

function btnGetServerTime_onclick() {    PageMethods.GetServerTime(cb_getServerTime);} function cb_getServerTime(result) {    document.getElementById("result").innerHTML = result;}服务器端代码如下,注意方法必须为静态,且添加[System.Web.Services.WebMethod]和[Microsoft.Web.Script.Services.ScriptMethod]两个属性:

[System.Web.Services.WebMethod][Microsoft.Web.Script.Services.ScriptMethod]public static string GetServerTime(){    return DateTime.Now.ToString();}OK!

Anthem.NET版本的实现代码

首先是页面的HTML部分,没什么过多需要注意的:

<div>    <input type="button" value="Get Server Time" id="btnGetServerTime" οnclick="return btnGetServerTime_onclick()" />    <span id="result" /></div>客户端JavaScript部分,注意用Anthem_InvokePageMethod辅助函数调用服务器端方法:

function btnGetServerTime_onclick() {    Anthem_InvokePageMethod("GetServerTime", [], cb_getServerTime);} function cb_getServerTime(result) {    document.getElementById("result").innerHTML = result.value;}最后是服务器端代码,注意Page_Load中要注册一下(与ASP.NET AJAX中的ScriptManager有异曲同工之妙)。还有方法应用了[Anthem.Method]属性:

[Anthem.Method]public string GetServerTime(){    return DateTime.Now.ToString();} protected void Page_Load(object sender, EventArgs e){    Anthem.Manager.Register(this);}OK!

Ajax.NET Professional版本的实现代码

页面的HTML部分和Anthem.NET版本的完全一致:

<div>    <input type="button" value="Get Server Time" id="btnGetServerTime" οnclick="return btnGetServerTime_onclick()" />    <span id="result" /></div>客户端JavaScript部分倒于与ASP.NET AJAX得有几分神似,注意“ASP.ajaxpro_aspx”这个东西为本ASP.NET页面编译后的类名:

function btnGetServerTime_onclick() {    ASP.ajaxpro_aspx.GetServerTime(cb_getServerTime);} function cb_getServerTime(result) {    document.getElementById("result").innerHTML = result.value;}服务器端代码类似Anthem.NET版本的实现方式,同样需要在Page_Load中注册,且需要为方法应用一个属性——不过这里是[AjaxPro.AjaxMethod]:

[AjaxPro.AjaxMethod]public string GetServerTime(){    return DateTime.Now.ToString();} protected void Page_Load(object sender, EventArgs e){    AjaxPro.Utility.RegisterTypeForAjax(this.GetType());}OK!

实现方式比较

用图表说话吧,我也同样不再评论了:

源代码下载

这个是我进行本次实验所用到的程序源代码:3ASPNETAJAXFrameworksTest.zip

该文章转载自'大智の博客':http://www.csafe.cn/article.asp?id=1217

转载于:https://www.cnblogs.com/6602300/archive/2007/02/14/650080.html

客户端调用服务器端方法——ASP.NET AJAX(Atlas)、Anthem.NET和Ajax.NET Professional实现之小小比较[转]...相关推荐

  1. 使用 AjaxManager 生成调用服务器端方法的 javascript 函数

    通过 AjaxManager, 我们可以方便的生成调用 WebService 或者一般处理程序的 javascript 函数, 这样就可以方便的在客户端调用. 本文更新: 2011-12-12: 去掉 ...

  2. java 调用服务器文档,JAVA远程调用服务器端方法

    JAVA远程调用服务器端方法 内容精选 换一换 Windows Server 2012 R2操作系统弹性云服务器,本地使用远程桌面连接功能连接云服务器并启用redirected drive功能时,云服 ...

  3. Winform C#客户端调用接口方法封装

    Winform C#客户端调用接口方法封装 编码中,偶尔需要调用其他方提供的API或者其他端交互的API.封装了常用的调用的get请求与post的请求. 接口返回值为Json,复制返回值通过Visua ...

  4. Asp.net ajax、Anthem.net、Ajax pro三大ajax框架那一种使用比较方便?易于配置?

    ·      aspxcsharp Asp.net ajax.Anthem.net.Ajax pro三大ajax框架那一种使用比较方便?易于配置? Ajax Pro如何实现DataGrid无刷新? o ...

  5. 使用JQuery从客户端调用C#方法

    这篇文章将帮助你怎样实现客户端调用后台定义的方法.JQuery让生活变的更简单,对于它来说,这有一个很简单的方法去实现这个目的. 早前,我们知道一种方法:如果我们想从客户端去调用一个后台添加的函数就需 ...

  6. 深入Atlas系列:综合示例(1) - 调用服务器端方法时直接获得客户端具体类型...

    摘要: 在使用ASP.NET AJAX时,大家对于返回服务器端的复杂类型的情况经常会遇到问题.Dflying兄写了一篇文章来说明在如何在客户端得到Sys.Preview.Data.DataTable对 ...

  7. js 调用服务器端方法总结

    javascript函数中执行C#代码中的函数: 方法一:1.首先建立一个按钮,在后台将调用或处理的内容写入button_click中;         2.在前台写一个js函数,内容为documen ...

  8. JS调用服务器端方法

    javascript函数中执行C#代码中的函数: 方法一:1.首先建立一个按钮,在后台将调用或处理的内容写入button_click中;         2.在前台写一个js函数,内容为documen ...

  9. android 和 js交互 客户端调用的方法

    mWebView.setWebViewClient(new WebViewClient() { // 点击H5的按钮,跳转到另一个界面,单机H5里的提交按钮判断是否登录,onPageFinished( ...

  10. Asp.net ajax、Anthem.net、Ajax pro三大ajax框架论坛网友比较

    个人感觉性价比最高的是anthem.net,MS的AJAX最常用的是UPDATEPANLE,但是用了不好布局,效率也很低!不如anthem.net,ajaxpro的门槛相对高了些(是相对),而且开发起 ...

最新文章

  1. 读书:历史 -- 百年战争简史
  2. 用linux写python_linux用什么写python
  3. React history.push 传递参数
  4. 做好三个“避免”,加速网站排名提升!
  5. co11n——生产订单确认的BAPI
  6. 使用C#把Tensorflow训练的.pb文件用在生产环境
  7. 人工智能会让工作环境变得更公平,还是更压抑?
  8. echarts 卡_图表太丑怎么破,ECharts神器带你飞!
  9. 解决:No goals have been specified for this build. You must specify a valid lifecycle phase or a goal i
  10. 创业,白手起家需要些什么?
  11. Linux下的虚拟机拷贝与快照生成
  12. 【文献阅读】ResNet-Deep Residual Learning for Image Recognition--CVPR--2016
  13. 超硬核 Web 前端学霸笔记,学完就去找工作!
  14. 解决Visual Studio 2022 python 中文乱码问题
  15. 小学生学AD16(入门级别,看这篇就够了)
  16. 如何运用SWOT分析法
  17. 「POI2012」约会 Rendezvous
  18. 一周电子取证行业热点简讯
  19. nexmo - 电话报警Alert
  20. 第4届华为编程大赛决赛试题解答(棋盘覆盖)

热门文章

  1. Win10安装MySql步骤
  2. 树中两节点的最低公共祖先
  3. 微服务学习之服务治理、服务注册与发现、Eureka【Hoxton.SR1版】
  4. python 整合同类数据求分位值_【利用python进行数据分析】数据聚合与分组运算...
  5. mfc用数组怎么存储句柄_指南手机存储不足怎么办?用好这份清理指南你的手机还能再战三年...
  6. linux 显存占用内存,Linux服务器内存、CPU、显卡、硬盘使用情况查看
  7. linux数组操作 增删改查,JS实现数组的增删改查操作示例
  8. 实施和开发哪个前景好_现在学习苹果ios开发还有发展前景吗?学android和ios哪个更好?...
  9. 面试题:React实现鼠标托转文字绕原点旋转
  10. Java编程:排序算法——冒泡排序