C# MVC5使用MvcSiteMapProvider构建twitter引导菜单
MVC5模板中的默认菜单部分如下所示:C# MVC5使用MvcSiteMapProvider构建twitter引导菜单,c#,asp.net-mvc,twitter-bootstrap,asp.net-mvc-5,mvcsitemapprovider,C#,Asp.net Mvc,Twitter Bootstrap,Asp.net Mvc 5,Mvcsitemapprovider,MVC5模板中的默认菜单部分如下所示: <div class="navbar-collapse collapse"> <ul class="nav navbar-nav"> <li>@Html.ActionLink("Home", "Index", "Home")</li> <li>@Html.ActionLink("About", "Ab
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li>@Html.ActionLink("Home", "Index", "Home")</li>
<li>@Html.ActionLink("About", "About", "Home")</li>
<li>@Html.ActionLink("Contact", "Contact", "Home")</li>
</ul>
@Html.Partial("_LoginPartial")
</div>
这条线将产生以下结果:
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li>@Html.ActionLink("Home", "Index", "Home")</li>
<li>@Html.ActionLink("About", "About", "Home")</li>
<li>@Html.ActionLink("Contact", "Contact", "Home")</li>
</ul>
//how to put _LoginPartial here!
</div>
因此,问题是如何在由MvcSiteMapProvider创建的菜单内呈现@Html.Partial_LoginPartial?如果我没有记错,您可以在菜单方法中指定DisplayTemplate 导航到~/Views/Shared/DisplayTemplates并创建一个名为MyMenu.cshtml的新视图 将模型类型设置为mvcsitemprovider.Web.Html.Models.MenuHelperModel,然后使用Html指定菜单结构 MyMenu.cshtml
如果我没有记错,您可以在菜单方法中指定DisplayTemplate 导航到~/Views/Shared/DisplayTemplates并创建一个名为MyMenu.cshtml的新视图 将模型类型设置为mvcsitemprovider.Web.Html.Models.MenuHelperModel,然后使用Html指定菜单结构 MyMenu.cshtml
罗文的答案非常接近你需要做的,应该引导你走上正确的道路。模板MyMenu.cshtml可以包含输出所需HTML所需的任何逻辑。您只需修改模板即可满足您的需求。请注意,如果需要,您也可以修改默认模板,但在升级MvcSiteMapProvider期间,当要求替换它们时,您必须小心选择“否”,否则您的自定义设置将被覆盖
@model MvcSiteMapProvider.Web.Html.Models.MenuHelperModel
@using MvcSiteMapProvider.Web.Html.Models
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
@foreach (var node in Model.Nodes) {
<li>@Html.DisplayFor(m => node)</li>
}
</ul>
@Html.Partial("_LoginPartial")
</div>
罗文的答案非常接近你需要做的,应该引导你走上正确的道路。模板MyMenu.cshtml可以包含输出所需HTML所需的任何逻辑。您只需修改模板即可满足您的需求。请注意,如果需要,您也可以修改默认模板,但在升级MvcSiteMapProvider期间,当要求替换它们时,您必须小心选择“否”,否则您的自定义设置将被覆盖
@model MvcSiteMapProvider.Web.Html.Models.MenuHelperModel
@using MvcSiteMapProvider.Web.Html.Models
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
@foreach (var node in Model.Nodes) {
<li>@Html.DisplayFor(m => node)</li>
}
</ul>
@Html.Partial("_LoginPartial")
</div>
刚刚更新了_LoginPartial的完整代码。是否有机会从_LoginPartial复制逻辑?您是否可以从else块内部调用@Html.MvcSiteMap.MenuMyMenu?刚刚更新了_LoginPartial的完整代码。是否有机会从_LoginPartial复制逻辑?您不能从else块内部调用@Html.MvcSiteMap.MenuMyMenu吗?
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li>@Html.ActionLink("Home", "Index", "Home")</li>
<li>@Html.ActionLink("About", "About", "Home")</li>
<li>@Html.ActionLink("Contact", "Contact", "Home")</li>
</ul>
//how to put _LoginPartial here!
</div>
@model MvcSiteMapProvider.Web.Html.Models.MenuHelperModel
@using MvcSiteMapProvider.Web.Html.Models
<ul class="nav navbar-nav navbar-right">
@foreach (var node in Model.Nodes) {
<li>@Html.DisplayFor(m => node)</li>
}
</ul>
@Html.MvcSiteMap().Menu("MyMenu")
@model MvcSiteMapProvider.Web.Html.Models.MenuHelperModel
@using MvcSiteMapProvider.Web.Html.Models
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
@foreach (var node in Model.Nodes) {
<li>@Html.DisplayFor(m => node)</li>
}
</ul>
@Html.Partial("_LoginPartial")
</div>
@Html.MvcSiteMap().Menu("MyMenu")