隐藏所有人的管理员链接

时间:2011-07-25 15:24:28

标签: asp.net asp.net-mvc-3 razor

我正在使用带有剃刀的asp.net mvc。如何隐藏仅供管理员使用的链接?

1 个答案:

答案 0 :(得分:1)

您可以在视图模型上声明一个布尔属性:

public class MyViewModel
{
    public bool IsAdmin { get; set; }

    ... some other model properties
}

并在您的视图中:

@if (Model.IsAdmin)
{
    <!-- show the link that only administrators are supposed to see -->
    @Html.ActionLink("Do something very special", "Bar")
}

当然,在渲染此视图的控制器操作中,您将填充此视图模型:

[Authorize]
public ActionResult Foo()
{
    var model = new MyViewModel
    {
        IsAdmin = User.IsInRole("Admin")
    };
    return View(model);
}

显然,只有管理员可以调用的Bar操作也应该使用Authorize属性进行修饰:

[Authorize(Roles = "Admin")]
public ActionResult Bar()
{
    ...
}