asp.net

位置:IT落伍者 >> asp.net >> 浏览文章

ASP.NET 3.5核心编程之利用页面方法来进行远程调用


发布日期:2020年10月22日
 
ASP.NET 3.5核心编程之利用页面方法来进行远程调用
页面方法只是页面代码类中所暴露的带有WebMethod特性的公共静态方法页面方法和支持AJAX的Web服务的运行时引擎几乎相同使用页面方法我们不用创建和发布服务

页面方法的定义

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

public class TimeServicePage : SystemWebUIPage{

[WebMethod]

public static DateTime GetTime()

{

return DateTimeNow;

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

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

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

[WebMethod]

public static DateTime GetTime()

{

return DateTimeNow;

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

页面方法的启用

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

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

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

为能执行页面方法必须在nfig文件中HTTP模块ScriptModule:

<httpModules>

<add name=ScriptModule

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

页面方法的使用

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

PageMethods代理类

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

页面方法的执行

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

function getTime(){

PageMethodsGetTime(methodCompleted)

}

function methodCompleted(results context methodName){

var displayString = resultsformat(ddd dd MMMM yyyy

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

上一篇:asp.net之旅第一站:登录功能

下一篇:浅析ASP.NET编程中十大技巧