gpt4 book ai didi

c# - 如何在嵌套母版页 asp.net mvc 4 中制作基于角色的动态菜单?

转载 作者:太空宇宙 更新时间:2023-11-03 21:45:13 24 4
gpt4 key购买 nike

我想问一下基于母版页asp.net mvc 4中角色的动态菜单。在我问之前。我在 sql server express 2008 中有这样的数据库菜单:

Id_Menu        int          NotNull
Displaymenu varchar(50) Null
Url varchar(50) Null
ParentID int Not Null

我在 mvc 4 中创建了这样的母版页:

<body>
<header>
<div class="float-left">
<img src="../../Images/logo.png" width="350" height="95" />
</div>
<div class="content-wrapper">
<div class="float-right">
<section id="login">
<%: Html.Partial("_LoginPartial") %>
</section>
<nav>
<ul id="menu">
<li><%: Html.ActionLink("Home", "Index", "Home") %></li>
<li><%: Html.ActionLink("About", "About", "Home") %></li>
<li><%: Html.ActionLink("Contact", "Contact", "Home") %></li>
</ul>
</nav>
</div>
</div>
</header>
<div id="body">
<asp:ContentPlaceHolder ID="FeaturedContent" runat="server" />
<section class="content-wrapper main-content clear-fix">
<asp:ContentPlaceHolder ID="MainContent" runat="server" />
</section>
</div>
<footer>
<div class="content-wrapper">
<div class="float-left">
<p>&copy; <%: DateTime.Now.Year %> - Cenie.Sistem Informasi.IT
Telkom</p>
</div>
</div>
</footer>

我已经创建了这样的嵌套母版页:

<%@ Master Language="C#" MasterPageFile="~/Views/Shared/Site.Master" 
AutoEventWireup="true" CodeBehind="Dashboard.master.cs"
Inherits="TA_SID.Views.Shared.Dashboard<TA_SID.Models>" %>
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="FeaturedContent" runat="server">
</asp:Content>
<asp:Content ID="Content3" ContentPlaceHolderID="MainContent" runat="server">
<div class="span3 main-menu-span">
<div class="well nav-collapse sidebar-nav">
<ul class="nav nav-tabs nav-stacked main-menu">
<li class="nav-header hidden-tablet">MAIN
MENU</li>
if()
<li><a class="ajax-link"
href="/Admin/Index"><i class="icon-home"></i><span class="hidden-tablet">
Dashboard</span>
</a></li>
<li><a class="ajax-link"
href="/Admin/PertaminaIndex"><i class="icon-eye-open"></i><span class="hidden-tablet">
Pertamina</span></a></li>
<li><a class="ajax-link"
href="/Admin/DistributorIndex"><i class="icon-edit"></i><span class="hidden-tablet">
Distributor</span></a></li>
<li><a class="ajax-link"
href="/Admin/CustomerIndex"><i class="icon-list-alt"></i><span class="hidden-tablet">
Customer</span></a></li>
<li><a class="ajax-link"
href="/Admin/ProdukIndex"><i class="icon-font"></i><span class="hidden-tablet">
Product</span></a></li>
<li><a class="ajax-link" href="table.html">
<i class="icon-align-justify"></i><span class="hidden-tablet"> Chart</span></a></li>
<li><a class="ajax-link"
href="calendar.html"><i class="icon-calendar"></i><span class="hidden-tablet">
Calendar</span></a></li>
<li><a class="ajax-link" href="grid.html"><i
class="icon-th"></i><span class="hidden-tablet"> User</span></a></li>

</ul>
</div><!--/.well -->
</div>
</asp:Content>
<asp:Content ID="Content4" ContentPlaceHolderID="ScriptsSection" runat="server">
</asp:Content>

你能帮我吗.. 如果我以管理员或用户身份登录后如何在嵌套母版页中创建动态菜单加载?

谢谢你的帮助..

最佳答案

首先,您不想在母版页中执行此逻辑。您想要创建一个局部 View ,该 View 将根据某个 Controller 中的子操作返回的模型信息构建菜单。例如:

您应该将此逻辑移动到某个负责构建导航的 Controller 中。在此 Controller 内部,您应该声明一个返回所需信息的子操作。

如果您计划将 URL 和描述存储在数据库中,您不妨也将访问权限存储在表中。这样您就可以传递用户的组或用户名并检索该用户有权访问的 URL 集合。之后,您可以使用类似于下面的代码。

例如:

public class NavigationController : Controller
{
[ChildActionOnly]
public PartialViewResult GetMenuForUser()
{
var model = _securityLayer.GetUrlForUser(HttpContext.User.Identity.Name);

return PartialView("_UserMenu", model);
}
}

你的 _UserMenu.cshtml 可能是这样的:

@model IEnumerable<SomeCollection>

@foreach(var url in Model) {
<li><a class="ajax-link" href="@url.Url">@url.Description</a></li>
}

然后在您的母版页中,您要在其中使用您要调用的菜单:

<div class="well nav-collapse sidebar-nav">
<ul class="nav nav-tabs nav-stacked main-menu">
<li class="nav-header hidden-tablet">MAIN MENU</li>
@{ Html.RenderAction("GetMenuForUser", "Navigation"); }
</ul>
</div>

无论您是否将用户访问权限存储在数据库中,这应该让您了解如何继续。

更新:抱歉,我后来意识到您使用的是 ASPX View Engine 而不是 Razor。您需要将我的标记转换为 ASPX View Engine。

关于c# - 如何在嵌套母版页 asp.net mvc 4 中制作基于角色的动态菜单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17383447/

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