如果不允许用户访问目标,请禁用链接

时间:2009-10-14 12:38:12

标签: asp.net-mvc

我创建了一个ASP.NET MVC应用程序,并为我的用户创建了不同类型的角色。然后我创建了不同类型的AuthorizeAttributes来允许/禁止访问我的控件中的不同Actions。

但是我有很多链接指向不同角色限制的不同行动。你可以以某种方式修复,以便theese链接自动被禁用吗?我当然可以在我的代码中添加很多UserIsInRole(....) - 但我真的不愿意,如果有更好的方法。

你有什么建议吗?

2 个答案:

答案 0 :(得分:1)

它们是否在列表或菜单中?这是你的控制器可以传递给你的视图吗?您可以传出所有允许的(或禁止的,更合适的)列表,并在显示链接之前检查它。

if(allowedLink.Contans(myLink)
//显示已启用的链接
否则
//显示已禁用

另一个好方法是覆盖ActionLinks的HtmlHelper并让它为你检查权限。然后,如果他们没有权限,你的html助手会显示它被禁用。

例如,请参阅此链接http://www.asp.net/learn/mvc/tutorial-09-cs.aspx

答案 1 :(得分:0)

脱离我的头顶......

•您可以为每个链接设置onClick操作,以便不执行任何操作。

•您可以将链接的网址设置为"#",但不执行任何操作。