安全中国首页 > 编程中心 > .NET编程
 
安全中国网友投稿专用上传FTP空间:
Ftp服务器:download.anqn.com
Ftp端口:21
用户名:anqn
密 码:anqn.com
 

ASP.NET 2.0 Ajax:调用页面中的类方法[1]

更新时间:2008-7-27 14:36:21
责任编辑:ShellExp
热 点:

  让客户端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);
  }

 
学习软件编程开发技术,推荐加入以下软件编程培训班:
易语言软件编程培训班(简单易学)  Delphi软件编程培训班  VC++软件编程培训班
VB软件编程培训班  JAVA高端编程就业研发班

学习网站开发制作技术,推荐加入以下网站开发培训班:
ASP.net网站开发项目实战班  ASP语言网站建设培训班

学习网络安全入侵防护技术,推荐加入以下技术培训班:
大型网络安全入侵防护班  网站脚本程序全方位安全检测班

学习网络管理、网吧运营维护技术(网管),推荐加入以下培训班:
大型网吧技术管理人才特训班  Linux网络嵌入架构工程师培训班

学习专项特殊技术,推荐加入以下专项技术培训班:
软件与游戏外挂脱壳破解班(逆向工程)  赚钱王道-网赚技能培训班  Flash动画设计师就业特训班

 
相关编程
一日一文章
 
一日一软件
一日一动画