2013-04-30 47 views
0

我有这样的代码的碎片画面之一:我可以使用控制器属性来隐藏Razor视图中的链接吗?

<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

回答

1

您可以根据条件

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

当你使用,我不知道如何自定义的东西的作品,但通过基于布尔做创建您自己的扩展方法来扩展MvcHtmlString使行动的事情也会被渲染在您的自定义角色或任何其他

<li> 
    @Html.ActionLink("Index","Champaigns").IfAllowed(true/false) 
</li> 
相关问题