ASP.NET 3.5核心编程学习笔记(58):利用页面方法来进行远程调用

  页面方法只是页面代码类中所暴露的带有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上下文针对的不是页面的生命周期,它在接到请求后就存在,并一直伴随着请求而存在。

转载于:https://www.cnblogs.com/free722/archive/2011/05/04/2036543.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值