如何在C#中为嵌套的ul和li标签创建ID

时间:2015-12-09 08:18:23

标签: c# asp.net

我需要使用以下模式构建一个id为菜单的树。 树的数据来自数据库,该数据库返回具有多个数据表的数据集。 任何人都可以帮助如何使用字符串生成器这样做? 以下是如何安排项目的示例;

<html xmlns="http://www.w3.org/1999/xhtml">
<body>
<div id="tree" class="tree" valign="left" runat="server">
 <ul id='ctlTreeView_1'>
   <li id='ctlTreeView_1_1'><label title="someUrl" ondblclick='javascript:dblClick(this)'>Label list</label>
    <ul id='ctlTreeView_1_1_1'>
       <li id='ctlTreeView_1_1_1_1'><label title="label1" ondblclick='javascript:dblClick(this)'>Label1</label></li>
       <li id='ctlTreeView_1_1_1_2'><label title="label2" ondblclick='javascript:dblClick(this)'>Label2</label></li>
     </ul>
   </li>
 </ul>
</div>
</body>
</html>

2 个答案:

答案 0 :(得分:0)

在您的情况下,我会将StringBuilderstring.Format结合使用,以使用占位符将ID放入html代码中。

只需创建一个字符串构建器:

var builder = new StringBuilder()

并追加所有行:

builder.AppendLine("<html xmlns=\"http://www.w3.org/1999/xhtml\">");
// ...    
builder.AppendLine("</html>");

如果您想在标记中放置一些ID,请使用:

builder.AppendLine(string.Format("<ul id='{0}'>", "YOUR_ID"));
// ....
builder.AppendLine("</ul>");

如果要迭代db-result,可以将这些行放在循环中。

稍后您可以简单地使用.ToString()来获取完整的html代码:

string htmlCode = builder.ToString();

希望这有帮助。

修改 由于您使用的是asp.net,因此您也可以使用asp.net classes来构建html控件。请看一下HtmlGenericControl。也许这也是一种选择。

答案 1 :(得分:0)

最好使用StringBuilder标记声明根ul控件,而不是使用runat="server",并使用子控件从代码隐藏中填充它,如下例所示:

.aspx文件:

  <ul id="ctlTreeView_1" runat="server" />

.cs文件:

protected void Page_Load(object sender, EventArgs e) {
    var li_1 = new HtmlGenericControl("li") {
        InnerText = "first item",
        ID = "li_1"
    };
    ctlTreeView_1.Controls.Add(li_1);

    var ul_2 = new HtmlGenericControl("ul") {
        ID = "ul_2"
    };
    li_1.Controls.Add(ul_2);

    var li_2_1 = new HtmlGenericControl("li") {
        InnerText = "first inner item",
        ID = "li_2_1"
    };
    ul_2.Controls.Add(li_2_1);

}