如何创建一个动态的ASP:ImageMap

问题描述:

我想创建一个ASP:ImageMap动态数量的热点。我尝试了下面的代码,但它抱怨在图像映射中嵌套了一个中继器。任何想法如何做到这一点?如何创建一个动态的ASP:ImageMap

<asp:ImageMap ID="imgMap" runat="server" ImageUrl="~/circles.png" 
        HotSpotMode="PostBack"> 
     <asp:Repeater runat="server" id="repeat" DataSource=<%#circles %>> 
      <asp:CircleHotSpot PostBackValue="<%#name %>" 
           Radius="<%#r %>" 
           X="<%#x %>" 
           Y="<%#y %>" /> 
     </asp:Repeater> 
    </asp:ImageMap> 

(请忽略与数据绑定的问题。我以后会解决这些。)

你不能在另一个服务器标签内放置一个中继器。将热点动态添加到ImageMap的方法是将它们动态添加到后面的代码中。你应该能够使用类似这样的东西在你的页面加载事件:

CircleHotSpot hotSpot = new CircleHotSpot(); 
hotSpot.PostBackValue = "xxxx"; 
hotSpot.X = xx; 
hotSpot.Y = yy; 
hotSpot.radius = r; 
imgMap.HotSpots.Add(hotSpot); 

请原谅的事实,确切的语法可能是有点过,因为我没有写在一段时间这个代码,但你应该明白。如果您想添加多个热点,您可以将这段代码粘贴到for/foreach循环中,并遍历您想要变成热点的项目列表。

你需要使用一个服务器控件或可能你做它在普通的HTML? 类似的东西:

<map id="map1"> 
    <asp:Repeater ID="rep" runat="server"> 
    <ItemTemplate> 
    <div align=center> 

    <area href="<%# DataBinder.Eval(Container.DataItem,"page")%>" 
    shape="circle" 
    coords="<%# DataBinder.Eval(Container.DataItem,"Coords")%>" 
    alt="area1" /> 
    </ItemTemplate> 
    </asp:Repeater> 
    </map> 
    <img src="Images/HPIM1784.jpg" alt="bajs" usemap="#map1" /> 
+0

我在发帖后想过这样做。我希望页面在单击区域时发回。我想我可以使用隐藏的控件和__post_back javascript函数来伪造它。 – 2009-01-08 01:15:49