MVC5使用MvcSiteMapProvider构建twitter bootstrap菜单
MVC5模板中的默认菜单部分如下所示:
_LoginPartial看起来像这样:
@using Microsoft.AspNet.Identity @if (Request.IsAuthenticated) { using (Html.BeginForm("LogOff", "Account", FormMethod.Post, new { id = "logoutForm", @class = "navbar-right" })) { @Html.AntiForgeryToken()
} } else { }
所以我可以替换代码
只有一行:
@Html.MvcSiteMap().Menu(false)
该行将产生这样的:
所以问题是如何在MvcSiteMapProvider
创建的菜单中呈现@Html.Partial("_LoginPartial")
?
Rowan的答案非常接近你需要做的事情,应该让你走上正确的道路。 模板MyMenu.cshtml可以包含输出所需HTML所需的任何逻辑。 您只需修改模板即可满足您的要求。 请注意,您也可以根据需要修改默认模板,但在升级MvcSiteMapProvider时要求更换它们时必须小心选择“否”,否则您的自定义将被覆盖。
@model MvcSiteMapProvider.Web.Html.Models.MenuHelperModel @using MvcSiteMapProvider.Web.Html.Models
然后这一行将产生所需的输出:
@Html.MvcSiteMap().Menu("MyMenu")
如果我没记错,你可以在Menu()
方法中指定DisplayTemplate。
导航到〜/ Views / Shared / DisplayTemplates并创建一个名为MyMenu.cshtml的新视图。
将模型类型设置为MvcSiteMapProvider.Web.Html.Models.MenuHelperModel
,然后指定菜单结构(使用HTML)。
MyMenu.cshtml
@model MvcSiteMapProvider.Web.Html.Models.MenuHelperModel @using MvcSiteMapProvider.Web.Html.Models
现在更改Menu()
方法。
@Html.MvcSiteMap().Menu("MyMenu")