我一直在尝试想出一种创建动态角色导航解决方案的方法,用于我正在开发的项目。
导航应该仅显示与用户角色相关的链接,例如:管理员将拥有查看应用程序统计信息、管理客户账户等链接,而普通用户将拥有管理其账户、与朋友沟通等链接。
目前,我有一个名为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
有没有办法将这个逻辑从视图中拿出来,让控制器处理?
Action("/Controller/Action/id")
来调用它们。id 部分可以是你想要创建哪个导航栏的句柄,而模型可以是导航项的列表。更好的是,你的子操作可以在没有参数的情况下查找用户角色并返回正确的导航栏。我以前就用过这种方法来进行基于角色的导航。 - Dave Alperovich