0

我在其中一个分片视图中有这段代码:

<li>
   <a href="@Url.Action("Index","Campaigns")" class="tables"><span>Campaigns</span></a>
</li>

在活动控制器上,我有一个AuthorizeAttribute这样的自定义:

[AuthorizeRoles(Roles = "admin")]
public class CampaignsController : Controller
{
    ...
}

问题是,如果用户不是admin,则链接仍在呈现,即使控制器不可访问。

我正在使用自定义实现,因此,标准的授权方法(例如).IsInRole将不起作用。

有没有办法将属性应用于我的控制器方法,如果用户无权访问,则隐藏链接而不使用.IsInRole

4

1 回答 1

1

您可以创建自己的扩展方法来扩展 MvcHtmlString 以便根据条件呈现 Action 事物

public static MvcHtmlString IfAllowed(this MvcHtmlString action, bool allowed)
{
  return allowed? action:String.Empty;
}

当您使用时,我不知道您的自定义内容是如何工作的,但会根据您的自定义角色或其他传递布尔值

<li>
   @Html.ActionLink("Index","Champaigns").IfAllowed(true/false)
</li>
于 2013-04-30T17:41:43.867 回答