有没有办法以编程方式将项添加到<UL>元素?

don*_*nde 9 html asp.net

我有一个现有的ASP.NET 2.0应用程序<UL>.我想以编程方式向其添加项目.我已经添加了IDrunat="server"属性.

djd*_*d87 19

您可以创建新的HtmlGenericControls并将它们添加到UL控件的Controls属性中吗?因此,给定标记如下:

<ul runat="server" id="foo_bar">
    <li>Item</li>
</ul>
Run Code Online (Sandbox Code Playgroud)

你可以这样做(其中itemList是你要添加为LI的东西的列表):

foreach (var item in itemList)
{
    HtmlGenericControl newLi = new HtmlGenericControl("li");
    newLi.InnerText = item.DisplayText;
    foo_bar.Controls.Add(newLi);
}
Run Code Online (Sandbox Code Playgroud)

如果你要出一个字符串数组,即:

string[] itemList = new string[] { "1", "2", "3" };
foreach (string item in itemList)
{
    HtmlGenericControl newLi = new HtmlGenericControl("li");
    newLi.InnerText = item;
    foo_bar.Controls.Add(newLi);
}
Run Code Online (Sandbox Code Playgroud)

您会看到以下结果(使用我的原始标记):

  • 项目
  • 1
  • 2
  • 3


Jam*_*xon 3

将项目添加到无序列表的最简单方法是使用重复器控件。

您可以将项目列表绑定到中继器,然后根据需要输出每个列表项目。

 <asp:Repeater ID="rpt1" Runat="server">
 <HeaderTemplate>
  <ul>
 </HeaderTemplate>

  <ItemTemplate>
    <li>
      <%# DataBinder.Eval(Container.DataItem, "Item") %>
   </li>
  </ItemTemplate>

  <FooterTemplate>
    </ul>
  </FooterTample>
 </asp:Repeater>
Run Code Online (Sandbox Code Playgroud)

然后在 C#(或您使用的任何服务器端语言)中执行以下操作:

DataSet listItems = GetTheListItemsMethod();

rptr1.DataSource = listItems;
rptr1.DataBind();
Run Code Online (Sandbox Code Playgroud)

  • 更好的是,将 &lt;ul&gt; 和 &lt;/ul&gt; 放入转发器的 &lt;HeaderTemplate&gt; 和 &lt;FooterTemplate&gt; 元素中。这样,当您没有列表项时,您就不会得到空的 &lt;ul&gt;...是的,就像那样:) (2认同)