Asp.net mvc 5 单击菜单中的MvcSiteMapProvider“主页”按钮不起作用
我有一个使用MvcSiteMapProvider生成的菜单,它使用一个用于引导和路由的帮助器: 主控台:Asp.net mvc 5 单击菜单中的MvcSiteMapProvider“主页”按钮不起作用,asp.net-mvc-5,asp.net-mvc-routing,mvcsitemapprovider,Asp.net Mvc 5,Asp.net Mvc Routing,Mvcsitemapprovider,我有一个使用MvcSiteMapProvider生成的菜单,它使用一个用于引导和路由的帮助器: 主控台: [MvcSiteMapNode(Title = "Home", Key = "home")] public ActionResult Index() { return View(model); } 其他控制员: [Route("mypageview", Name = "mypage")] [MvcSiteMapNode(Title = "My Page", ParentKey =
[MvcSiteMapNode(Title = "Home", Key = "home")]
public ActionResult Index()
{
return View(model);
}
其他控制员:
[Route("mypageview", Name = "mypage")]
[MvcSiteMapNode(Title = "My Page", ParentKey = "home", Key = "mypage")]
public ActionResult mypage()
{
mymodel model = .....
return View(model);
}
助手:
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
@foreach (var node in Model.Nodes)
{
if (node.Children.Any())
{
<li>
<a href="#" class="dropdown-toggle" data-toggle="dropdown">@node.Title<strong class="caret"></strong></a>
<ul class="dropdown-menu">
@for (int i = 0; i < node.Children.Count; i++)
{
<li>@Html.DisplayFor(x => node.Children[i])</li>
}
</ul>
</li>
}
else
{
<li>
<a href="@node.Url" class="dropdown-toggle" data-toggle="dropdown">@node.Title</a>
</li>
}
}
</ul>
</div>
所有菜单项和下拉菜单都工作正常。它们都在导航到正确的位置。但是,菜单第一个“主页”按钮无法导航到索引
我尝试将索引包含到路由中,但这只会破坏网站。这是引导的一个限制。因为它是用来与触摸屏一起工作的,所以AFAIK不可能使用打开子菜单的菜单项来导航到页面。在触摸屏设备上,无法告诉用户何时打开子菜单,而不是导航到当前菜单项的位置,因此唯一可用的操作是打开和关闭子菜单
有一些,但我没有尝试过,因此无法告诉您使用MvcSiteMapProvider的最佳解决方案是什么。只需说,MvcSiteMapProvider根本没有问题,因此您可能需要询问引导社区该怎么做。我通过向没有子节点的节点添加url来解决此问题,并且onclick在有子节点的节点上打开标准子菜单:
@foreach (var node in Model.Nodes)
{
if (node.Children.Any())
{
<li>
<a href="#" class="dropdown-toggle" data-toggle="dropdown">@node.Title<strong class="caret"></strong></a>
<ul class="dropdown-menu">
<li>@Html.DisplayFor(x => node)</li>
@for (int i = 0; i < node.Children.Count; i++)
{
<li>@Html.DisplayFor(x => node.Children[i])</li>
}
</ul>
</li>
}
else
{
<li>
<a href="@node.Url">@node.Title</a>
</li>
}
}
@foreach (var node in Model.Nodes)
{
if (node.Children.Any())
{
<li>
<a href="#" class="dropdown-toggle" data-toggle="dropdown">@node.Title<strong class="caret"></strong></a>
<ul class="dropdown-menu">
<li>@Html.DisplayFor(x => node)</li>
@for (int i = 0; i < node.Children.Count; i++)
{
<li>@Html.DisplayFor(x => node.Children[i])</li>
}
</ul>
</li>
}
else
{
<li>
<a href="@node.Url">@node.Title</a>
</li>
}
}
[MvcSiteMapNode(Title = "mytitle",
ParentKey = "home",
Key = "experiencevenuesandcircuits",
Order = 5)]