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

本文关键字:li ID 创建 ul 嵌套 | 更新日期: 2023-09-27 18:26:10

我需要按照以下模式构建一个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>

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

在您的情况下,我会将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>");

如果您想迭代数据库结果,可以将这些行放入循环中。

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

string htmlCode = builder.ToString();

希望这能有所帮助。

编辑由于您使用的是asp.net,因此您也可以使用asp.net classes来构建html控件。看看HtmlGenericControl就知道了。也许这也是一种选择。

与其使用StringBuilder,不如用runat="server"标记声明根ul控件,并用子控件从codeehind填充它,如本例所示:

.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);
}