Asp.net mvc 3 ASP.NET MVC3如何使用角色对非管理员用户隐藏删除链接?

Asp.net mvc 3 ASP.NET MVC3如何使用角色对非管理员用户隐藏删除链接?,asp.net-mvc-3,entity-framework-4.1,roles,Asp.net Mvc 3,Entity Framework 4.1,Roles,我有一个带有entity framework 4.1的mvc3 web应用程序。我创建了两个角色——用户和管理员。当我以管理员身份登录应用程序时,我希望看到表中记录旁边的删除链接。但是,如果用户登录,我只希望他们看到编辑和详细信息,而不是删除。 最好的方法是什么?这是一个有多个答案的混合包。有两种很好的方法 一种是基于登录用户创建控制器(或全局应用程序请求)中的所有链接,并将其传递给视图。我不喜欢这个,因为在我看来,由控制器创建的链接是视图的责任 第二种方法是手动检入视图本身。这很简单,很干净,

我有一个带有entity framework 4.1的mvc3 web应用程序。我创建了两个角色——用户和管理员。当我以管理员身份登录应用程序时,我希望看到表中记录旁边的删除链接。但是,如果用户登录,我只希望他们看到编辑和详细信息,而不是删除。
最好的方法是什么?

这是一个有多个答案的混合包。有两种很好的方法

一种是基于登录用户创建控制器(或全局应用程序请求)中的所有链接,并将其传递给视图。我不喜欢这个,因为在我看来,由控制器创建的链接是视图的责任

第二种方法是手动检入视图本身。这很简单,很干净,但从某种角度来看,这是合乎逻辑的

部分菜单.cshtml

<a href="/User/Attack">Boot To The Head</a>
@if (User.IsInRole("Administrator"))
{
  <a href="/Admin/BootToTheHead">You Missed</a>
}

@if(User.IsInRole(“管理员”))
{
}

我只使用过讨厌的手册@if check。。想要更好的方法。您可以在控制器中通过设置ViewData[“HideLink”]=来完成此操作!User.IsInRole(“管理员”);是的,这和我的第一个答案是一样的。谢谢你的建议,埃里克。我知道这种方法,但认为有更好的方法避免向视图中添加代码。无论如何,它是有效的,所以我把这个标记为正确答案。