Razor菜单代码插入空白列表项,任何人都可以找到为什么请?

时间:2013-10-28 14:31:26

标签: c# razor

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

1 个答案:

答案 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 *@
}