ASP.NET在<li>中包装了一个asp:HyperLink,来自服务器端</li>

时间:2012-12-28 19:19:28

标签: c# asp.net asp.net-controls

我有一个菜单项的下一个结构:

class MenuItem
{
    public string Path, Title;
}

我希望能够迭代MenuItem[]的对象,在每次迭代时创建asp:HyperLink的新对象,并将其添加到<ul>列表中。

必须发生的一件事是每个HyperLink都在<li>标记内。

我该怎么做?

1 个答案:

答案 0 :(得分:3)

您可以使用转发器。在aspx中:

<asp:Repeater ID="repMenuItems" runat="server">
    <HeaderTemplate>
        <ul>
    </HeaderTemplate>
    <ItemTemplate>
        <li><asp:HyperLink ID="lnkMenuItem" runat="server" Text='<%# Eval("Title") %>' NavigateUrl='<%# Eval("Path")%>'/></li>
    </ItemTemplate>
    <FooterTemplate>
        </ul>
    </FooterTemplate>
</asp:Repeater>

在代码隐藏中:

repMenuItems.DataSource = arrMenuItem;  // your MenuItem array
repMenuItems.DataBind();

另外,您应该更改使用公共属性而不是公共成员的类代码,如下所示:

public class MenuItem 
{ 
    public string Title {get;set;} 
    public string Path {get;set;} 
}

我建议您阅读有关.NET中的属性的更多信息,这是对象封装的一个很好的功能http://msdn.microsoft.com/en-us/library/65zdfbdt(v=vs.71).aspx

希望这有助于你