概述ASP.NET中的HTML Map控件

开发 后端
本文介绍ASP.NET中的HTML Map控件,以及如何使用ASP.NET AJAX框架对添加可点击的热点的HTML Map控件进行扩展。

在本文中,我将向你展示如何使用ASP.NET AJAX框架对添加可点击的热点的HTML Map控件进行扩展。经扩展后,当我们的鼠标移动到这些热点上后,即弹出关于这些热点的详细信息;但是,这些详细信息都是通过AJAX异步方式从远程服务中取得的。

一、简介

首先,我们注意到,ASP.NET 2.0中也提供了一个服务器控件ImageMap。此控件是一个让你可以在图片上定义热点(HotSpot)区域的服务器控件。用户可以通过点击这些热点区域进行回发(PostBack)操作或者转发到某个URL地址。典型情况下,该控件用于需要对某张图片的局部范围进行互动操作。然而,这个控件的不足之处在于,在点击这些热点区域进行回发时将导致整个Web页面的刷新。

在本文中,我们将基于ASP.NET AJAX技术对普通的HTML Map控件加以扩展,以达到在点击其上的热点区域时,在显示有关详细信息时仅仅导致局部的页面更新,从而使之适应Web 2.0应用程序开发潮流。

二、创建一个AJAX示例网站

启动Visual Studio 2005,选择“文件→新建网站…”,然后选择“ASP.NET AJAX-Enabled Web Site”模板,命名工程为“Ajax_ImageMap”,并选择C#作为内置支持语言,***点击OK。

然后,添加一个新的ASPX页面ImageMap.aspx,并且按如下所示修改其中的HTML代码部分:

  1. <IMG SRC="images\solarsys.gif" WIDTH=504 HEIGHT=126 BORDER=0 
  2. ALT="Solar System" USEMAP="#SystemMap"> 
  3. <MAP NAME="SystemMap"> 
  4. <AREA SHAPE="rect" COORDS="0,0,82,126" 
  5. onmouseover="javascript:GetAreaInfo(event, 'sun');"  
    onmouseout="javascript:HidePopup();"> 
  6. <AREA SHAPE="circle" COORDS="90,58,3" 
  7. onmouseover="javascript:GetAreaInfo(event, 'merglobe');"  
    onmouseout="javascript:HidePopup();" 
  8. > 
  9. <AREA SHAPE  
  10. </MAP> 

在上面代码中,我们添加了一个HTML 元素和一个HTML 元素(注:VS2005工具栏中没有提供现成的控件,只能手工添加)。其中定义了各个星球相应的热点形状及坐标信息。而且,每一个热点都有一个相应的 onmouseover和onmouseout JavaScript函数与之相关联。当鼠标在这些热点上移动时,这两个函数将被激活,相应信息被显示出来。有关这两个函数,我们将在后面详细讨论。

三、创建一个AJAX服务

现在,我们需要创建一个新的Web服务,由它负责与热点点击相关的数据检索任务。其实,这里所谓的“AJAX服务”,其功能与通常的Web服务是一致的。有关它们之间的细节区别在此不再赘述。现在,你可以右击工程,然后添加一个命名为LocationService.asmx的Web服务。

注意,在本例中我们仅想通过这个Web服务来模拟实战环境中的一种简单逻辑。因此,它仅包含一个Web方法;此方法负责模拟从服务器数据库中取得客户端需要的信息。

在此,为了使这个ASP.NET Web服务能够被从客户端以AJAX方式加以调用,必须把ScriptService属性添加到类声明的前面,如下所示:

  1. [ScriptService()]  
  2. public class LocationService : System.Web.Services.WebService  
  3. {  
  4. 现在,编写我们的Web方法:  
  5. [WebMethod]  
  6. [ScriptMethod(UseHttpGet = falseResponseFormatResponseFormat = 
    ResponseFormat.Json)]  
  7. public string GetAreaInfo(string area)  
  8. {  
  9. return area;  

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

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

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

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

  1. <asp:ScriptManager ID="ScriptManager1" runat="server"> 
  2. <services> 
  3. <asp:servicereference path="~/LocationService.asmx" /> 
  4. </services> 
  5. </asp:ScriptManager> 

本文介绍ASP.NET中的HTML Map控件

【编辑推荐】

  1. ASP.NET的TypeConverter
  2. 浅析ASP.NET的TypeResolver
  3. ASP.NET中定义JavaScriptConverter
  4. 在ASP.NET中替换Sys.Services的方法
  5. 使用ASP.NET AJAX的Profile Service
责任编辑:佚名 来源: IT168
相关推荐

2009-07-21 09:18:02

UpdatePanelASP.NET AJA

2009-07-21 15:27:12

ASP.NET 2.0

2009-08-04 11:29:14

HTML代码ASP.NET控件

2009-07-30 12:42:19

html控件和web控

2009-07-24 09:57:25

ASP.NET HTM

2009-07-22 17:45:35

ASP.NET教程

2009-09-11 09:09:00

ASP.NETAdRotator控件

2009-07-20 13:32:24

ScriptManagASP.NET

2009-07-28 17:17:19

ASP.NET概述

2009-07-31 09:20:16

NGWS RuntimASP.NET

2009-07-21 17:18:26

UpdateProgrASP.NET AJA

2009-08-05 13:58:26

ASP.NET Mem

2009-07-22 16:17:39

ASP.NET AJA

2009-07-23 16:55:55

ASP.NET特点

2009-07-27 13:52:36

Panel控件ASP.NET

2009-07-20 13:54:31

ScriptManagASP.NET AJA

2009-07-29 13:04:59

2009-07-27 15:52:21

ASP.NET特点ASP.NET概述

2011-03-11 08:38:17

HTML 5ASP.NET 4

2009-01-08 10:20:56

AutoCompletAjaxASP.NET
点赞
收藏

51CTO技术栈公众号