使用ASP.NET AJAX框架扩展HTML Map控件(2)_.Net教程

编辑Tag赚U币
教程Tag:暂无Tag,欢迎添加,赚取U币!

推荐:ASP.NET调用oracle存储过程实现快速分页
《使用 ADO.NET 访问 Oracle 9i 存储过程》见下面的介绍(如果对这个不怎么懂的,还是先看看下面文章) http://www.microsoft.com/china/MSDN/library/data/dataAccess/DMSDNorsps.mspx 包

现在,编写我们的Web方法:

以下为引用的内容:
[WebMethod]
  [ScriptMethod(UseHttpGet = false, ResponseFormat = ResponseFormat.Json)]
  public string GetAreaInfo(string area)
  {
  return area;
  }

根据权威人士建议,为了安全起见,我们一般要使用HttpPost(或者HttpGet= false)方式访问Web方法。然后,我们把返回的数据格式配置为JSON格式(默认方式即为JSON方式)。

为了简化起见,这里的GetAreaInfo方法仅仅返回输入参数的相同值;但在实际开发中,我们应该在此替换以从数据库中检索数据。

到目前为止,我们已经成功创建从客户端以AJAX方式加以调用的Web服务。

但是,我们还要对页面中的服务器控件ScriptManager进行一些适当的配置,如下所示:

以下为引用的内容:
<asp:ScriptManager ID="ScriptManager1" runat="server">
<services>
<asp:servicereference path="~/LocationService.asmx" />
</services>
</asp:ScriptManager>
在此,我们仅在节点下加入了一个服务参考,但其作用如何呢?

从生成的HTML源码分析,上面的配置将生成如下所示内容:

以下为引用的内容:
<script src="LocationService.asmx/jsdebug" type="text/javascript"></script>

这里的脚本标签引用了一个JavaScript文件LocationService.asmx/jsdebug。其实这是一个Web服务代理类。正是通过此代理类,我们才得以从客户端以异步方式调用服务器端的Web服务。

更有意思的是,如果你简单地复制显示在上面的路径到浏览器中,你将看到一个在运行时刻由AJAX环境生成的JavaScript文件—此文件使脚本服务调用可用。有关代理类,我们不再深入讨论。

下面,我们来看如何创建一个定制的客户端类。

四、 创建客户端定制类

我们知道ASP.NET AJAX框架的重大“发明”之一就是,它引入了面向对象的JavaScript编程模型。现在,借助于JavaScript设计模式,我们可以轻松地创建自己的模板或类,加入继承概念,创建接口与枚举等。

在本文中,我们将开发一个封装所有本示例中要求功能的客户端类。

现在,右击工程,并新添加一个名为ImageMap的JavaScript文件。在此文件中,我们将定义一个新的命名空间MyServices;这个命名空间将包含我们要开发的客户端类。如下所示:

以下为引用的内容:
Type.registerNamespace("MyServices");


  接下来,我们定义要创建的客户端类的构造函数:

MyServices.Location = function (uiElement, uiBody) {
MyServices.Location.initializeBase(this);
this._uiElement = uiElement;
this._uiBody = uiBody;
this._xAxis = 0;
this._yAxis = 0;
}

一个模板或类的构造函数也只不过是一个普通的JavaScript函数。该构造器共有两个参数:uiElement和uiBody。

分享:复杂ASP.NET服务器控件调整小技巧
在创建或修改布局复杂ASP.NET服务器端控件时,大量的时间都是在编译,等待JIT,修改,编译,JIT... 这样一个循环中,而且两个编译常常还很耗费时间。特别地,当控件已集成在页面之中后,在出现

来源:模板无忧//所属分类:.Net教程/更新时间:2008-08-22
相关.Net教程