如何创建动态ASP:ImageMap

时间:2009-01-07 19:45:52

标签: asp.net

我想创建一个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> 

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

2 个答案:

答案 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循环中粘贴此代码块,并迭代您想要转换为热点的项目列表。