在代码隐藏</li> </ul>的aspx中添加<ul> <li>列表

时间:2013-06-01 13:45:15

标签: c# html asp.net

我正在尝试制作嵌套ul&amp;代码后面的li代码。 为此,我在我的.aspx页面

中编写了初级代码
<ul class="dropdown" runat="server" id="tabs"> </ul>

我的C#代码

DatTable dtOutput = Generix.getData("Get Some Data");

foreach (DataRow drOutput in dtOutput.Rows)
{
    HtmlGenericControl li = new HtmlGenericControl("li");                    
    tabs.Controls.Add(li);
    HtmlGenericControl anchor = new HtmlGenericControl("a");
    anchor.Attributes.Add("href", "#");
    anchor.InnerText = Convert.ToString(drOutput["ModuleGroup"]);
    li.Controls.Add(anchor);
    HtmlGenericControl ul = new HtmlGenericControl("ul");

    DatTable dtOutputList = Generix.getData("Get another set of Data");

    foreach (DataRow drOutputList in dtOutputList.Rows)
    {                        
        HtmlGenericControl ili = new HtmlGenericControl("li");
        ul.Controls.Add(ili);
        HtmlGenericControl ianchor = new HtmlGenericControl("a");
        foreach (DataColumn dcOutputList in dtOutputList.Columns)
        {
            ianchor.Attributes.Add("href", Convert.ToString(drOutputList["ModuleFileName"]));
        }
        ianchor.InnerText = Convert.ToString(drOutputList["ModuleName"]);
        ili.Controls.Add(ianchor);                        
    }
    //tabs.Controls.Add(li);
}

当我运行我的项目并在我的菜单上检查元素时,我看到类似

的内容
<ul id="ctl00_tabs" class="dropdown">
    <li class="">
        <a href="#">Master</a>
    </li>
    <li class="">
        <a href="#">Cards Management</a>
    </li>
    <li class="">
        <a href="#">Authorization</a>
    </li>
    <li class="">
        <a href="#">Loyalty</a>
    </li>
    <li class="">
        <a href="#">Reports</a>
    </li>
</ul>

ul内没有创建嵌套的li标签?为什么??

例如: -

<ul id="ctl00_tabs" class="dropdown">
    <li class="">
        <a href="#">Master</a>
        <ul>
            <li><a href="Some.aspx"><span>Some Name</span></a></li>
            <li><a href="Some1.aspx"><span>Some Name 1</span></a></li>
        </ul>
    </li>
</ul>

4 个答案:

答案 0 :(得分:5)

你看到你在哪里打电话li.Controls.Add(anchor)?您没有在任何地方致电li.Controls.Add(ul),因此您创建的ul实际上并未在页面的任何位置添加。

答案 1 :(得分:1)

您可以使用以下

中的c#代码将LI项目添加到UL项目
<ul class="respond" id="feedbackTab" runat="server"></ul> 

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

HtmlGenericControl anchor = new HtmlGenericControl("a");
anchor.Attributes.Add("href", "aboutme.aspx");
anchor.InnerText = "Tab Text";

有关详细信息,请访问此链接:http://www.sharepointsol.com/2014/09/dynamically-adding-li-to-ul.html

答案 2 :(得分:0)

这里的问题是您要向锚点添加多个Href属性。可能每次都会覆盖href。将您的代码更改为:

foreach (DataRow drOutput in dtOutput.Rows)
{
    HtmlGenericControl li = new HtmlGenericControl("li");
    tabs.Controls.Add(li); // tabs is id of ul tag which is runat=server
    foreach (DataColumn dcOutput in dtOutput.Columns)
    {
        HtmlGenericControl anchor = new HtmlGenericControl("a");
        anchor.Attributes.Add("href", Convert.ToString(drOutput["ModuleFileName"]));
        anchor.InnerText = Convert.ToString(drOutput["ModuleName"]);
        li.Controls.Add(anchor);
    }
}

答案 3 :(得分:0)

您可以尝试以下代码:

ASPX:

<form id="form1" runat="server">
        <div>


            <asp:PlaceHolder ID="ControlContainer"
                runat="server" />
        </div>
</form>

CS:

HtmlGenericControl tabs = new HtmlGenericControl("ul");
            tabs.ID = "myTopnav";
            tabs.Attributes.Add("class", "topnav");

            HtmlGenericControl li = new HtmlGenericControl("li");
            HtmlGenericControl ianchor = new HtmlGenericControl("a");

            li = new HtmlGenericControl("li");
            ianchor = new HtmlGenericControl("a");
            ianchor.ID = "Home";
            ianchor.Attributes.Add("href", "#home");
            ianchor.Attributes.Add("class", "active");
            ianchor.InnerText = "Home";
            li.Controls.Add(ianchor);
            tabs.Controls.Add(li);


            li = new HtmlGenericControl("li");
            ianchor = new HtmlGenericControl("a");
            ianchor.ID = "News";
            ianchor.Attributes.Add("href", "#");
            ianchor.InnerText = "News";
            li.Controls.Add(ianchor);
            tabs.Controls.Add(li);

            ControlContainer.Controls.Add(tabs);