检查控制器和视图中的权限

时间:2011-12-11 18:37:21

标签: c# asp.net-mvc asp.net-mvc-3 permissions

我想为某些操作创建权限,例如创建或更新信息(但不显示)。 为此,我在所有必要的方法之前添加属性,例如。

[Permissions(Permissions.Admin)]
public ActionResult Create()
{
   //...
}

此外,我不想让链接在索引页面上保持活动状态。所以我必须在视图中添加一些检查。

@if (checking...)
{
    @Html.ActionLink("Create New", "Create")  

}

我添加的支票越多,越无聊,我必须记住的东西越多。 怎么做对了?

3 个答案:

答案 0 :(得分:3)

你可以为此创建一个HtmlHelper。

@Html.ActionLinkUsingPermissions("Create New", "Create",Permissions.Admin)

这样的东西

HtmlHelper将根据当前用户权限决定是否显示链接。

答案 1 :(得分:2)

您可以创建一个只读版本的视图,并让控制器决定它应返回哪个版本(根据您的许可)。

然后可以在部分视图中将共享UI外部化。

建议尽可能使您的视图免于业务逻辑。

答案 2 :(得分:1)

您还可以创建两个不同的视图模型。一个用于读/写,一个用于读取。然后使用View Templates功能,您可以让一个视图自动选择要使用此行显示的正确模板:

@Html.DisplayForModel()