【发布时间】:2014-11-17 09:25:07
【问题描述】:
有没有办法仅在循环第一次到达那里时附加 ul class="nav nav-third-level background-white collapse" ?我试过了,bool和一个计数器,但显然它每次都会被初始化,我尝试了一个goto来跳过增量,但这样它甚至不会初始化它:)
我正在尝试获取以下 HTML 代码:
<li class="">
<a href="#"><i class="fa fa-fw"></i>First Level<span class="fa arrow"></span></a>
<ul class="nav nav-second-level background-white collapse">
<li>
<a href="#">Second Level1</a>
<ul class="nav nav-third-level background-white collapse">
<li>
<a href="#">Third Level1</a>
</li>
<li>
<a href="#">Third Level2</a>
</li>
</ul>
</li>
<li>
<a href="#">Second Level2</a>
<ul class="nav nav-third-level background-white collapse">
<li>
<a href="#">Third Level4</a>
</li>
<li>
<a href="#">Third Level5</a>
</li>
</ul>
</li>
</ul>
</li>
这是我的 C# 代码:
private static string RenderMenuRecursive(ItemMenu menu, int level)
{
StringBuilder sb = new StringBuilder();
if (level > 0)
{
int firstIteration = 0; // This will be initialized as 0 every time :\
if (level == 1)
{
sb.AppendLine("<li class=\"\"><a href=\"#\"><i class=\"fa fa-fw\"></i>"+ menu.name + "<span class=\"fa arrow\"></span></a>");
}
if (level == 2)
{
sb.AppendLine("<ul class=\"nav nav-second-level background-white collapse\"><li><a href=\"#\">" + menu.name + "</a>");
}
if (level == 3)
{
if (firstIteration == 0)
{
sb.AppendLine("<ul class=\"" + "nav nav-third-level background-white collapse" + "\">");
firstIteration++;
}
sb.AppendLine("<li><a href=\"#\">" + menu.name + "</a></li>");
}
}
level++;
foreach (ItemMenu subMenu in menu.subMenuItems)
{
sb.AppendLine(RenderMenuRecursive(subMenu, level));
}
return sb.ToString();
}
这是我实际得到的:
<li class=""><a href="#"><i class="fa fa-fw"></i>First Level<span class="fa arrow"></span></a>
<ul class="nav nav-second-level background-white collapse"><li><a href="#">Second Level1</a>
<ul class="nav nav-third-level background-white collapse">
<li><a href="#">Third Level1</a></li>
<ul class="nav nav-third-level background-white collapse">
<li><a href="#">Third Level2</a></li>
<ul class="nav nav-second-level background-white collapse"><li><a href="#">Second Level2</a>
<ul class="nav nav-third-level background-white collapse">
<li><a href="#">Third Level3</a></li>
<ul class="nav nav-third-level background-white collapse">
<li><a href="#">Third Level4</a></li>
【问题讨论】:
-
那么问题出在缩进上?
-
@MotiAzu,不,我无法获得预期的代码
-
你为什么不关闭
uls &lis? -
对不起,我试图理解你的问题并比较了代码 sn-ps,但没有设法得到它。您能否将代码简化为核心部分,并说明您的“实际”版本与您想要的版本到底有什么问题?
-
哦,知道了。你在第三级得到了太多的“
- ”标签,对吧?
标签: c# html .net asp.net-mvc stringbuilder