ASP.NET 3.5怎么利用页面方法进行远程调用

转载 2013年12月02日 09:58:20
页面方法只是页面代码类中所暴露的带有WebMethod特性的公共静态方法。页面方法和支持AJAX的Web服务的运行时引擎几乎相同。使用页面方法,我们不用创建和发布服务。

  页面方法的定义

  在页面代码类中定义公共静态方法,并为其添加WebMethod特性,便会将ASP.NET AJAX页面转化为Web服务:

  public class TimeServicePage : System.Web.UI.Page{

  [WebMethod]

  public static DateTime GetTime()

  {

  return DateTime.Now;

  }} 我们可以在页面方法中使用任何数据类型,所有类型在调用期间都会被转换为JSON格式。

  我们也可以在aspx源文件中以内联方式定义Web方法:

  <script type="text/C#" runat="server">

  [WebMethod]

  public static DateTime GetTime()

  {

  return DateTime.Now;

  }</script> 注意,页面方法针对的是给定的ASP.NET页面,只有宿主页面才能调用自身的Web方法,不支持跨页面调用。

  页面方法的启用

  如果ASP.NET AJAX页面的代码类中包含WebMethod修饰的静态方法,运行时引擎会生成与Web服务一样的JavaScript代理类。我们可使用该类的实现来调用服务器方法。该类的名称会被硬编码为PageMethods.

  注意,页面方法在默认情况下是被禁用的。为启用它,我们必须将脚本管理器的EnablePageMethods属性设为true.

  <asp:ScriptManager runat="server" ID="ScriptManager1" EnablePageMethods="true" />

  为能执行页面方法,必须在web.config文件中HTTP模块ScriptModule:

  <httpModules>

  <add name="ScriptModule"

  type="System.Web.Handlers.ScriptModule, System.Web.Extensions" /></httpModules> 该模块的工作过程是,监听会话状态加载后的应用程序事件,执行页面方法,然后为调用者生成响应。由于获取会话状态是在启动页面生命周期之前执行的,所以,这种方法调用不会建立页面的生命周期,也不会进行子控件的初始化和处理。

  页面方法的使用

  页面方法的集合会以固定的类名暴露给JavaScript代码--PageMethods.该类会列出所有静态方法,且该类不需自行实例化。

  PageMethods代理类

  与Web服务的代理类不同,PageMethods代理类总会以内联脚本的形式嵌在引用它的页面主体中。否则,对于不同的页面,该类的名称应各不相同。该类的结构几乎与AJAX Web服务代理类的结构相同。

  页面方法的执行

  以上述代码中的GetTime方法为例:

  function getTime(){

  PageMethods.GetTime(methodCompleted);

  }

  function methodCompleted(results, context, methodName){

  var displayString = results.format("ddd, dd MMMM yyyy");

  $get("Label1")。innerHTML = displayString;} 通过页面方法,我们能够使用HttpContext的Current属性访问视图状态、ASP.NET Cache、User和其他内部对象。HTTP上下文针对的不是页面的生命周期,它在接到请求后就存在,并一直伴随着请求而存在。

相关文章推荐

在ASP.net 3.5中 用JSON序列化对象(两种方法)

在ASP.net 3.5中 用JSON序列化对象(两种方法) 过去我们使用JSON.net序列化一个对象,在asp.net3.5中已经集成了序列化对象为json的方法。 我们分别针对S...
  • guangen
  • guangen
  • 2012年04月13日 14:53
  • 153

How to set an IIS Application or AppPool to use ASP.NET 3.5 rather than 2.0

Link:How to set an IIS Application or AppPool to use ASP.NET 3.5 rather than 2.0 A question tha...

ASP.NET 3.5核心编程学习笔记:针对AJAX应用程序的WCF服务

  WCF服务能够输出JSON,通过HTTP进行传输(不一定要用SOAP进行数据包装)。我们要做的是,使端点使用webHttpBinding绑定模型,并通过新的特性来启用Web脚本调用。构建一个简单的...

ASP.NET 3.5(C#)系列3-新一代事务机制

事物这个概念已经接触过。在旧的ADO.NET事务机制中,我们需要这样做: SqlConnection conn = new SqlConnection(); conn....

如何使用<Beginning ASP.NET 3.5 in C# and VB>书中的示例代码

以第13章为例:LINQ 先创建一个website

asp.net 3.5与开发工具

第1章  ASP.NET 3.5与开发工具 从本章开始,读者将能够系统的学习ASP.NET 3.5技术,相对于ASP.NET 2.0而言,在3.5版本的ASP.NET中并没有太多的变化,而更多的变...

python利用phprpc进行远程调用

  • 2014年09月16日 16:27
  • 174KB
  • 下载

ASP.NET 3.5高级编程第一章

ASP.NET 3.5高级编程第一章  1.3 ASP.NET的page指令         ASP.NET指令在每个ASP.NET页面中都有,使用这些指令可以控制ASP.NET页面的行为。在AS...

ASP.NET 3.5 MVC 概述

MVC 基本概念 模型(Model):需要被显示的数据,如数据库NorthWind中的表Products对象就是一个模型 视图(View):用来显示模型中数据的用户界面,一般,视图就是HTML页面...

《ASP.NET 3.5 Social Networking》 - 书摘精要

(P7) These communities are able to generate income from advertising and additional paid services; ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ASP.NET 3.5怎么利用页面方法进行远程调用
举报原因:
原因补充:

(最多只允许输入30个字)