我在usercontrol中有ul元素,如下所示
<u><ul>
<li id="liMiddle" class="off">
<a href="#">One
</a>
<ul id="One" runat="server">
</ul>
</li>
<li id="liMiddle" class="off">
<a href="#">Two
</a>
<ul id="Two" runat="server">
</ul>
</li>
<li id="liMiddle" class="off">
<a href="#">Three
</a>
<ul id="Three" runat="server">
</ul>
foreach(子网站中的SPWeb超级站点) { int i = 0; HtmlGenericControl li = new HtmlGenericControl(“li”);
CurrentTab.Controls.Add(li);
HtmlGenericControl anchor = new HtmlGenericControl("a");
anchor.Attributes.Add("href", supersubsite.Url);
anchor.InnerText = supersubsite.Title;
li.Controls.Add(anchor);
} </u>
此处在每个循环中,Current选项卡应更改为相应的下一个ul id。如何访问它?
我必须在上面的ul下动态生成'li'元素。所以我需要在代码隐藏中逐个访问所有'ul'id。
有人可以告诉我解决方案吗?
答案 0 :(得分:5)
我会在代码隐藏中实现一个集合,您可以在presenter/controller
或page_load/click_events/..
中添加列表项
然后在ASP.NET MVC样式中简单循环..
// YourPage.aspx.cs:
private readonly ICollection<string> items = new Collection<string> { "one", "two" };
// YourPage.aspx
<ul>
<% foreach (var stringItem in this.items) { %>
<li><%= stringItem %></li>
<% } %>
</ul>
答案 1 :(得分:1)
您可以使用带有自定义UserListItem类/结构的Add方法创建自己的ListBuilder类。在这些类中,您可以使用TagBuilder使用为UserListItem构建的自定义类/结构来创建LI和UL标记。您可以使用用户定义的密钥存储您在该自定义ListBuilder类中构建的当前列表的静态字典。
这样,如果您需要从后面的代码中动态获取List或ListItems,您可以使用ListBuilder并按ID引用它们。
下面的代码有点粗糙,但这是一般的想法:
using System.Collections.Generic;
using System.Web.Mvc;
using System;
public class UserList
{
public List<UserListItem> UserListItems = new List<UserListItem>();
public void Add(UserListItem item)
{
UserListItems.Add(item);
}
}
public class UserListItem
{
public string Name { get; set; }
}
public class ListBuilder
{
static Dictionary<string, UserList> userLists = new Dictionary<string, UserList>();
public ListBuilder(string listId)
{
UserList newList = new UserList();
newList.Add(new UserListItem() { Name = "Item1" });
newList.Add(new UserListItem() { Name = "Item2" });
userLists.Add(listId, newList);
}
public static UserList GetList(string listId)
{
return userLists[listId];
}
public static string BuildList(string listId)
{
UserList list = userLists[listId];
TagBuilder listTagBuilder = new TagBuilder("ul");
list.UserListItems.ForEach(listItem =>
{
TagBuilder listItemTagBuilder = new TagBuilder("li") { InnerHtml = listItem.Name };
listTagBuilder.InnerHtml += listItemTagBuilder.ToString(TagRenderMode.Normal);
});
return listTagBuilder.ToString(TagRenderMode.Normal);
}
}