我想创建一个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>
(请忽略数据绑定的问题。我稍后会解决这些问题。)
答案 0 :(得分:0)
您是否需要使用服务器控件或者您是否可以使用常规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" />
答案 1 :(得分:0)
您不能将转发器放在另一个服务器标签内。动态添加热点到ImageMap的方法是在后面的代码中动态添加热点。您应该能够在页面加载事件中使用与此类似的内容:
CircleHotSpot hotSpot = new CircleHotSpot();
hotSpot.PostBackValue = "xxxx";
hotSpot.X = xx;
hotSpot.Y = yy;
hotSpot.radius = r;
imgMap.HotSpots.Add(hotSpot);
请原谅一个事实,确切的语法可能有点偏,因为我有一段时间没有编写这段代码,但你应该明白这一点。如果您想添加多个热点,可以在for / foreach循环中粘贴此代码块,并迭代您想要转换为热点的项目列表。