加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc-4 – 基于角色的导航

发布时间:2020-12-16 00:08:19 所属栏目:asp.Net 来源:网络整理
导读:我一直在尝试为我正在开发的项目创建一个基于动态角色的导航解决方案. 导航应仅显示与用户角色相关的链接,例如:管理员将具有查看应用程序统计信息,管理客户帐户等的链接,而标准用户将拥有管理其帐户的链接,与朋友交流等等.. 我目前有一个名为Navigation的局
我一直在尝试为我正在开发的项目创建一个基于动态角色的导航解决方案.

导航应仅显示与用户角色相关的链接,例如:管理员将具有查看应用程序统计信息,管理客户帐户等的链接,而标准用户将拥有管理其帐户的链接,与朋友交流等等..

我目前有一个名为Navigation的局部视图,其中包含一些用于角色检查的基本条件语句以及用于显示相应链接的混合标记.这有效,但是,我知道它很快就会变得无法管理.

导航局部视图:

@if(User.IsInRole("Admin")) {
    <li><a href="#">Statistics</a></li>
    <li><a href="#">Accounts</a></li>
    <li><a href="#">Dashboard</a></li>
} 
@if(User.IsInRole("User")) {
    <li><a href="#">Account</a></li>
    <li><a href="#">Friends</a></li>
}
// code omitted

有没有办法让这个逻辑退出视图并让Controller处理这个?

解决方法

正如所建议的那样,我创建了一个名为Menu的ChildAction和每个角色的部分视图.在操作中,我使用一些条件语句进行角色检查并渲染适当的视图.

这使条件语句保持在视图之外,从而使其成为更清晰的解决方案.

我确信可以做一些事情来整理它,我会继续努力改进它.

这是我使用的解决方案.

在我希望菜单出现的布局视图中,我使用了它.

@Html.Action("Menu","Navigation")

然后我创建了一个名为Navigation的控制器,并添加了一个名为Menu的Action.

public class NavigationController : Controller
{

    [ChildActionOnly]
    public ActionResult Menu()
    {
        if (Roles.IsUserInRole("Administrator"))
        {
            return PartialView("_NavigationAdmin");

        }

        return PartialView("_NavigationPublic");
    }

}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读