如何在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>
在您的情况下,我会将StringBuilder
与string.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);
}