gpt4 book ai didi

c# - MVC5 使用 MvcSiteMapProvider 构建推特 Bootstrap 菜单

转载 作者:行者123 更新时间:2023-11-30 20:53:42 27 4
gpt4 key购买 nike

MVC5 模板中的默认菜单部分如下所示:

     <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>

_LoginPartial 看起来像这样:

@using Microsoft.AspNet.Identity
@if (Request.IsAuthenticated)
{
using (Html.BeginForm("LogOff", "Account", FormMethod.Post, new { id = "logoutForm", @class = "navbar-right" }))
{
@Html.AntiForgeryToken()

<ul class="nav navbar-nav navbar-right">
<li>
@Html.ActionLink("Hello " + User.Identity.GetUserName() + "!", "Manage", "Account", routeValues: null, htmlAttributes: new { title = "Manage" })
</li>
<li><a href="javascript:document.getElementById('logoutForm').submit()">Log off</a></li>
</ul>
}
}
else
{
<ul class="nav navbar-nav navbar-right">
<li>@Html.ActionLink("Register", "Register", "Account", routeValues: null, htmlAttributes: new { id = "registerLink" })</li>
<li>@Html.ActionLink("Log in", "Login", "Account", routeValues: null, htmlAttributes: new { id = "loginLink" })</li>
</ul>
}

所以我可以替换代码

        <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>
</div>

只有一行:

@Html.MvcSiteMap().Menu(false)

那一行会产生这个:

        <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")

最佳答案

Rowan 的回答与您需要做的非常接近,应该会 Bootstrap 您走上正确的道路。模板 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>

然后这一行将产生所需的输出:

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

关于c# - MVC5 使用 MvcSiteMapProvider 构建推特 Bootstrap 菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19759606/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com