从codebehind C#Asp.net添加到列表

Tro*_*mus 24 c# asp.net list

我在ASPX页面中有一个UL列表:

<ul id="tabs">
 <li id="tab1"><a href="ztab1.htm">Tab 1</a></li>
 <li id="tab2"><a href="ztab2.htm">Tab 2</a></li>
 <li id="tab3"><a href="ztab3.htm">Tab 3</a></li>
 <li id="tab4"><a href="ztab4.htm">Tab 4</a></li>
 </ul> 
Run Code Online (Sandbox Code Playgroud)

我想从代码隐藏中动态添加列表项,包括每个新列表项的href条目.

怎么样?

djd*_*d87 52

您需要将ul标记为服务器端控件,然后将"新项"视为a HtmlGenericControl并将其插入到控件集合中:

<ul runat="server" id="tabs"> 
Run Code Online (Sandbox Code Playgroud)

要添加项目,请创建一个新元素并添加它:

HtmlGenericControl li = new HtmlGenericControl("li");
tabs.Controls.Add(li);

HtmlGenericControl anchor = new HtmlGenericControl("a");
anchor.Attributes.Add("href", "page.htm");
anchor.InnerText = "TabX";

li.Controls.Add(anchor);
Run Code Online (Sandbox Code Playgroud)


Nix*_*Nix 9

使用 asp:bulletedList,你的列表将更容易.

<asp:BulletedList id="blTabs" 
  BulletStyle="Disc"
  DisplayMode="LinkButton" 
  runat="server">
    <asp:ListItem Value="ztab1.htm">tab1</asp:ListItem>
    <asp:ListItem Value="ztab2.htm">tab2</asp:ListItem>
    <asp:ListItem Value="ztab3.htm">tab3</asp:ListItem>
</asp:BulletedList>
Run Code Online (Sandbox Code Playgroud)

代码背后:

    ListItem li = new ListItem();
    li.Value = "*.html";  //html goes here i.e.  xtab1.html
    li.Text = "New Text";  //text name goes i.e. here tab1
    blTabs.Items.Add(li);
Run Code Online (Sandbox Code Playgroud)


Sco*_*nce 5

此结果与GenericTypeTea相同,但不同之处在于HTML在后面的代码中"写入"并注入到页面中.

在你的标记中:

<asp:Literal id="litMarkup" runat="server" />
Run Code Online (Sandbox Code Playgroud)

在你的代码背后:

List<string> locations  // however this initialized 

StringBuilder sb = new StringBuilder();

sb.Append("<ul id=\"tabs\">");

for (int i = 0; i < locations.Count; i++)
{
   sb.Append("<li id=\"tab" + i.ToString() + "\"><a href=\"" + locations[i] + "\">Tab " + i.ToString() + "</a></li>");
}

sb.Append("</ul>");

litMarkup.Text = sb.ToString();
Run Code Online (Sandbox Code Playgroud)