• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

ASP.NET 2.0 Ajax程序设计:调用页面中的类方法

发布: 2008-4-08 12:53 | 作者: ASP.NET 2.0 Ajax程序 | 来源: examda.com | 查看: 205次 | 进入软件测试论坛讨论

领测软件测试网 ——此文章摘自《ASP.NET AJAX程序设计:第II卷(客户端)》定价:55元 特价:41.25元 购买>>

  让客户端JavaScript 直接异步调用服务器端的Web Service,这看起来真的是个不错的主意——理想化的分层Ajax应用程序就应该这样嘛!不过作为被ASP.NET服务器端开发模型“宠坏”了的我们,更加熟悉的方法是直接将方法写在ASP.NET页面中。比如在处理页面中的某个服务器端按钮Click事件的代码时,就可能这样调用定义在同一个页面代码文件中的方法:
  protected void Button1_Click(object sender, EventArgs e)
  {
  myLabel.Text = this.GetTextForLabel();
  }
  public string GetTextForLabel()
  {
  // ......
  return "Some Text";
  }

  对于那些“遗留”的ASP.NET应用程序来讲,这样直接定义在ASP.NET页面中的方法更是相当常见。若是仅仅为了配合ASP.NET AJAX的客户端访问Web Service功能,就将这些方法一一迁移到Web Service中,岂不是非常麻烦?

  好在ASP.NET AJAX在设计时考虑到了这个问题,并提供给我们一种作为替代的选择。ASP.NET AJAX异步通信层能够将声明在ASP.NET页面中公有的类方法(C#中的static,VB.NET中的Shared)当作Web Service中声明的方法一样对待,为其生成类似的客户端调用代理。

  我们还是通过一个实例程序来了解这个功能。该示例程序的功能与界面与前一节中的完全一致,唯一的不同就是,客户端异步调用的不再是某个Web Service,而是定义在ASP.NET页面中的类方法。

  首先是定义在ASP.NET页面中的类方法,完整的方法声明如下:
  [WebMethod]
  public static string SayHelloFromPage(string name)
  {
  return string.Format("Hello {0}!", name);
  }

  特别需要注意的是,若要让ASP.NET AJAX为其生成客户端调用代理,那么一定要为该方法添加[WebMethod]属性。

  然后是ScriptManager控件,注意粗体部分代码设置了EnablePageMethods属性为true,这也是让客户端能够直接调用服务器端页面方法所必需的。若忘记设定该属性,那么程序将无法完成预期功能。  

  程序界面中的UI元素和前一节示例程序中的完全一致,这里不赘:
  onclick="return btnInvoke_onclick()" />

  而本示例程序中按钮的click事件处理函数以及异步调用的回调函数则需要一定的修改,如下所示:
  function btnInvoke_onclick() {
  var theName = $get("tbName").value;
  PageMethods.SayHelloFromPage(theName, onSayHelloSucceeded);
  }
  function onSayHelloSucceeded(result) {
  $get("result").innerHTML = result;
  }

  注意上述代码中的粗体部分。可以看到,调用页面方法代理时统一的前缀为PageMethods。接下来是页面方法的名称,这里为SayHelloFromPage(),其参数列表和C#中方法的定义一致,额外的一个参数表示本次异步调用的回调函数。即语法为:
  PageMethods.[MethodName](param1, param2,..., callbackFunction);

  想要使用ASP.NET AJAX在客户端JavaScript中异步调用定义在ASP.NET页面中的方法,我们需要:
  将该方法声明为公有(public);
  将该方法声明为类方法(C#中的static,VB.NET中的Shared),而不是实例方法;
  为该方法添加[WebMethod]属性;
  将页面中ScriptManager控件的EnablePageMethods属性设置为true;
  在客户端使用如下JavaScript语法调用该页面方法:
  PageMethods.[MethodName](param1, param2,..., callbackFunction);
  为客户端异步调用指定回调函数,在回调函数中接收返回值并进一步处理。

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/

TAG: ajax AJAX Ajax


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网