这个问题似乎很简单……我相信成千上万的人已经弄清楚了,所以也许我想多了。如何根据用户的权限级别在导航栏中隐藏或显示链接?我正在使用自定义角色(不是 MVC)并将该信息存储在数据库中。我想要的效果很简单
_Layout.cshtml
...
@if(user.IsAdmin)
show link
...
我在网上和 SO 上找到了几种解决方案,但大多数似乎都违反了 MVC 结构。
我发现的大多数解决方案都涉及从视图中探测数据,我很确定这是不好的做法。其他解决方案涉及利用视图中的会话变量来决定显示什么,不显示什么。这不是也违反了最佳实践,因为视图不应该能够决定内容吗?
我能想到的唯一“纯 MVC”方式是将 的值合并IsAdmin
到我的每个视图模型中,这似乎比它的价值更麻烦。我想也可以创建一个 javacript 解决方案,在其中我使用 AJAX 来确定管理员状态,然后让它在我的导航栏中注入一个 html 元素。
处理这个问题的正确方法是什么?我只是误解了最佳实践吗?