从C#ASP NET后面的代码中添加<li>到<ul>标签

时间:2015-11-27 05:29:41

标签: c# html asp.net

标题如何说明,如何从后面的代码向<li>标记添加各种<ul>标记。我试过这个Add to List from codebehind C# Asp.net这是我的示例代码。

ASP

<body>
<form id="form1" runat="server">
<div>
    <ul id="menu" runat="server"> </ul>

</div>
</form>

代码背后。

        protected void Page_Load(object sender, EventArgs e)
    {
        CreateMenu();


    }

    protected void CreateMenu()
    {
        HtmlGenericControl li = new HtmlGenericControl("li");
        menu.Controls.Add(li);

        HtmlGenericControl anchor = new HtmlGenericControl("a");
        anchor.Attributes.Add("href", "login.aspx");
        anchor.InnerText = "login";



        li.Controls.Add(anchor);
    }

它运作得很好但是这可能是一个愚蠢的问题,我怎样才能在<ul>标签中添加多个元素?我需要为每个项目创建一个新对象(我认为这是错误的)或存在更好的方法来做到这一点?

我搜索了但是任何一个例子都让我怀疑,抱歉,如果你认为这是一个重复的问题。

2 个答案:

答案 0 :(得分:3)

如果你的数据(菜单项)不是来自某个来源(比如数据库),你需要反复重复相同的过程。或者你可以创建一个带有2个参数,文本和链接的函数。这样你可以用1行完成这项工作。

  private void AddMenuItem(string text, string link)
    {
        HtmlGenericControl li = new HtmlGenericControl("li");
        menu.Controls.Add(li);

        HtmlGenericControl anchor = new HtmlGenericControl("a");
        anchor.Attributes.Add("href", link);
        anchor.InnerText = text;



        li.Controls.Add(anchor);
    }

    AddMenuItem("text","link");
    AddMenuItem("text2","link2");
    AddMenuItem("text3","link3");

您可以根据自己的特定需求进行改进。

答案 1 :(得分:0)

您可以使用ListView。它的格式更简单。我还找到了一个很好的教程(http://weblogs.asp.net/scottgu/the-asp-listview-control-part-1-building-a-product-listing-page-with-clean-css-ui

<asp:ListView ID="ListView1" runat="server">
    <LayoutTemplate>
        <ul>
            <asp:PlaceHolder ID="itemPlaceholder" runat="server" />
        </ul>
    </LayoutTemplate>
    <ItemTemplate>
        <li>
            <div>
                <p class="name"><%# Eval("author") %></p>
                <p class="date"><%# Eval("insertDate") %></p>
            </div>
            <p class="comment"><span class="<%# Eval("icon") %>"></span><%# HttpUtility.HtmlEncode(Eval("comment")) %></p>
        </li>
    </ItemTemplate>
</asp:ListView>