我正在制作一个动态菜单,并且视图中的以下代码工作正常,生成菜单&子菜单都可以。但它在每个“顶级”项目后插入一个额外的空li。我试过把它分成更小的块,但没有去。谁能发现为什么请你?
生成的html:
# <ul>
<li class="stylename1">
<a target="" href="/">Home</a>
</li>
<li> </li>
<li class="active stylename">
<a target="" href="/other_page">other_page</a>
<div class="submenubox">
<ul>
</div>
</li>
<li> </li>
####视图代码:
<ul>
@foreach (var item in MenuHelper.Top())
{
if (item.Navigation.Show)
{
currstream = item.Layout;
switch (currstream)
{
case "Home":
currstyle = "style-a";
break;
case "Information_Home":
currstyle = "style-b";
break;
default:
currstyle = "style-c";
break;
}
foreach (var subItem in MenuHelper.Sub(item))
{
submenucount++;
}
if (submenucount > 0)
{
@:<li class ='@(MenuHelper.IsCurrent(item) ? "active" : "") @currstyle'>@Html.FrontHtml().PageLink(item.LinkText, item.FullName) <div class='submenubox' ><ul >
foreach (var subItem in MenuHelper.Sub(item))
{
if (item.Navigation.Show)
{
<li class ='@(MenuHelper.IsCurrent(subItem) ? "active" : "") @currstyle'>@Html.FrontHtml().PageLink(subItem.LinkText, subItem.FullName)</li>
}
}
@:</ul></div><li>
}
else
{
@:<li class ='@(MenuHelper.IsCurrent(item) ? "active" : "") @currstyle'>@Html.FrontHtml().PageLink(item.LinkText, item.FullName)<li>
}
submenucount = 0;
}
}
</ul>
答案 0 :(得分:6)
这是因为您没有正确关闭代码,而是附加了另一个<li>
而不是结束</li>
。试试这个:
if (submenucount > 0)
{
@:<li class ='@(MenuHelper.IsCurrent(item) ? "active" : "") @currstyle'>@Html.FrontHtml().PageLink(item.LinkText, item.FullName) <div class='submenubox'><ul>
foreach (var subItem in MenuHelper.Sub(item))
{
if (item.Navigation.Show)
{
<li class ='@(MenuHelper.IsCurrent(subItem) ? "active" : "") @currstyle'>@Html.FrontHtml().PageLink(subItem.LinkText, subItem.FullName)</li>
}
}
@:</ul></div></li> @* Note /li here *@
}
else
{
@:<li class ='@(MenuHelper.IsCurrent(item) ? "active" : "") @currstyle'>@Html.FrontHtml().PageLink(item.LinkText, item.FullName)<li> @* Note /li here *@
}