ASP.NET 3.5核心编程之利用页面方法进行远程调用 |
页面 步骤只不过页面代码类中所 袒露的带有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上下文针对的不是页面的生命周期,它在接到 申请后就存在,并向来 伴随着 申请而存在 。 |