У меня есть список UL на странице ASPX:
<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>
Я хотел бы динамически добавлять элементы списка из кодовой области, включая запись href для каждого нового элемента списка .
Как?
Вам нужно пометить свой ul как элемент управления на стороне сервера, затем обработать «новый элемент» как HtmlGenericControl
и вставить его в коллекцию элементов управления:
<ul runat="server" id="tabs">
Чтобы добавьте элемент, создайте новый элемент и добавьте его:
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);
Используйте 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>
Код позади:
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);
Этот результат такой же, как и у GenericTypeTea, но разница в том, что HTML «пишется» в коде позади и вводится на страницу.
В вашей разметке:
<asp:Literal id="litMarkup" runat="server" />
В вашем коде:
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();