我在其中一个分片视图中有这段代码:
<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
?
答案 0 :(得分: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>