2

我試圖建立這樣一個菜單: imageMvcSiteMapProvider - 增強的自舉下拉菜單

僅供參考我使用這個庫 https://github.com/behigh/bootstrap_dropdowns_enhancement

@Html.MvcSiteMap().Menu("BootstrapMenuHelperModel") 

@model MenuHelperModel 

<nav class="navbar" role="navigation"> 
    <div class="container-fluid menu-container"> 
     <div class="collapse navbar-collapse"> 
      <div class="navbar-header"> 
       <span class="navbar-brand">FAR BACKOFFICE</span> 
      </div> 
      <ul class="nav nav-pills"> 
       @foreach (var node in Model.Nodes) 
       { 
        if (node.Descendants.Any()) 
        { 
         <li role="presentation" class="dropdown"> 
          <a class="dropdown-toggle" data-toggle="dropdown" href="#" role="button" aria-expanded="false">@node.Title <span class="caret"></span></a> 
          <ul class="dropdown-menu"> 
           @foreach (var descendant in node.Descendants) 
           { 
            if (descendant.Descendants.Any()) 
            { 
             <li role="presentation" class="dropdown-submenu"> 
              <a class="dropdown-toggle" data-toggle="dropdown" href="#" role="button" aria-expanded="false">@descendant.Title</a> 
              <ul class="dropdown-menu"> 
               @foreach (var descendant2 in descendant.Descendants) 
               { 
                <li role="presentation">@Html.ActionLink(descendant2.Title, descendant2.Action, descendant2.Controller)</li> 
               } 
              </ul> 
             </li> 
            } 
            else 
            { 
             <li role="presentation">@Html.ActionLink(descendant.Title, descendant.Action, descendant.Controller)</li> 
            } 
           } 
          </ul> 
         </li> 
        } 
        else 
        { 
         <li role="presentation">@Html.ActionLink(node.Title, node.Action, node.Controller)</li> 
        } 
       }     
      </ul> 
     </div> 
    </div> 
</nav> 

我控制器

[MvcSiteMapNode(Title = "Assembleia", ParentKey = "Home", Key = "Assembleia", Clickable = false, Attributes = @"{ ""visibility"": ""SiteMapPathHelper,MenuHelper,!*"" }")] 
    public class AssembleiaController : Controller { } 

    [Route("Assembleia/Comunicado")] 
    [MvcSiteMapNode(Title = "Comunicado", ParentKey = "Assembleia", Key = "AssembleiaComunicado", Clickable = false, Attributes = @"{ ""visibility"": ""SiteMapPathHelper,MenuHelper,!*"" }")] 
    public class AssembleiaComunicadoController : AssembleiaController 
    {   
     [Route("Assembleia/Comunicado/Enviar")] 
     [MvcSiteMapNode(Title = "Enviar", ParentKey = "AssembleiaComunicado", Key = "AssembleiaComunicadoEnviar", Attributes = @"{ ""visibility"": ""SiteMapPathHelper,MenuHelper,!*"" }")] 
     public ActionResult Enviar() 
     { 
      return View(); 
     } 

     [HttpGet] 
     [Route("Assembleia/Comunicado/Consultar")] 
     [MvcSiteMapNode(Title = "Consultar", ParentKey = "AssembleiaComunicado", Key = "AssembleiaComunicadoConsultar", Attributes = @"{ ""visibility"": ""SiteMapPathHelper,MenuHelper,!*"" }")] 
     public ActionResult Consultar() 
     { 
      return View(); 
     } 
    } 

因此,我得到一個奇怪的和unkwon行爲 image image

怎麼回事?

同時要求對GitHub

+0

是什麼在MenuHelperModel類?把它放在pastebin上 –

+1

我對'node.Descendants'的反應,應該是'node.Children'或類似的 –

+0

@EricHerlitz MenuHelperModel顯示在這裏https://github.com/maartenba/MvcSiteMapProvider/blob/ 4a3f202cfbda780e06d86334f28ad9c7d8a98c0e/src/MvcSiteMapProvider/MvcSiteMapProvider/Web/Html/Models/MenuHelperModel.cs – Gandarez

回答

0

node.Descendants應該是node.Children

瞭解關於後裔和兒童的區別就在這裏,CSS Child vs Descendant selectors(別介意後beeing關於CSS,這是一個通用模式)