如何创建一个动态的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" />
我在发帖后想过这样做。我希望页面在单击区域时发回。我想我可以使用隐藏的控件和__post_back javascript函数来伪造它。 – 2009-01-08 01:15:49