1

我正在开发一个动态菜单,下面的代码在视图中工作正常,生成菜单和子菜单都可以。但是它在每个“顶级”项目之后插入一个额外的空 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> 
4

1 回答 1

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 *@
}   
于 2013-10-28T14:34:08.837 回答