簡體   English   中英

訪問代碼隱藏中的無序列表控件ID

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM