[英]Access Unordered list control id's in codebehind
我在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。
誰能告訴我解決方案?
我將在codebehind中實現一個集合,您可以通過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>
您可以使用Add方法創建自己的ListBuilder類,該方法采用自定義UserListItem類/結構。 在這些類中,您可以使用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);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.