相关疑难解决方法(0)

ASP.Net MVC隐藏/显示基于安全性的菜单项

我正在开发一个ASP.Net MVC 3站点._Layout主视图包含一个菜单,我想隐藏菜单中的一些项目,具体取决于您是否已登录以及您所处的角色.

目前使用这样的代码

@if (HttpContext.Current.User.Identity.IsAuthenticated)
{
   <li id="MyLearningTab">@Html.ActionLink("My Learning", "MyLearning", "Learning")</li> 
   if (HttpContext.Current.User.IsInRole("Reporters"))
   {
      <li id="ReportTab">@Html.ActionLink("Reports", "Index", "Reports")</li>
   }
   if (HttpContext.Current.User.IsInRole("Administrators"))
   {
      <li id="DashboardTab">@Html.ActionLink("Dashboard", "Dashboard", "Admin")</li>
      <li id="AdminTab">@Html.ActionLink("Admin", "Index", "Admin")</li> 
   }
}
Run Code Online (Sandbox Code Playgroud)

我想把它重构为更具可读性的东西,并想出类似的东西

@if ((bool)ViewData["MenuMyLearning"]){<li id="MyLearningTab">@Html.ActionLink("My Learning", "MyLearning", "Learning")</li> }    
@if((bool)ViewData["MenuReports"]){<li id="ReportTab">@Html.ActionLink("Reports", "Index", "Reports")</li>}
@if ((bool)ViewData["MenuDashboard"]){<li id="DashboardTab">@Html.ActionLink("Dashboard", "Dashboard", "Admin")</li>}
@if ((bool)ViewData["MenuAdmin"]){<li id="AdminTab">@Html.ActionLink("Admin", "Index", "Admin")</li>}
Run Code Online (Sandbox Code Playgroud)

我最初将以下内容添加到我的基本控制器构造函数中,以为我可以在那里为这些属性设置ViewData

ViewData["MenuDashboard"] = User != null && User.Identity.IsAuthenticated && User.IsInRole("Administrators");
ViewData["MenuAdmin"] = User != null && User.Identity.IsAuthenticated && User.IsInRole("Administrators");
ViewData["MenuReports"] = User != null && …
Run Code Online (Sandbox Code Playgroud)

asp.net-membership asp.net-mvc-3

15
推荐指数
2
解决办法
3万
查看次数

标签 统计

asp.net-membership ×1

asp.net-mvc-3 ×1