ASP.NET MVC如何应用基于角色或基于身份验证的View呈现?

Rop*_*tah 6 asp.net-mvc view custom-attributes

我想根据身份验证状态或角色显示/隐藏视图的某些部分.对于我的控制器操作,我已经扩展了ActionFilterAttribute,因此我可以归因于某些操作.

<RequiresRole(Role:="Admin")> _
Function Action() as ActionResult
    Return View()
End Function
Run Code Online (Sandbox Code Playgroud)

是否有一个类似的(归属)的方式,我可以在浏览使用?(所以不喜欢这样:如何根据用户所处的角色创建具有不同显示的视图?)

Kri*_*ris 6

您可以从视图中访问用户的登录角色,如下所示:

<% if (Page.User.IsInRole("Admin")) { %>
        <td>
          <%= Html.DeleteButton("delete", model.ID) %>
        </td>
<% } %>
Run Code Online (Sandbox Code Playgroud)

也许你的扩展方法有:

public static string DeleteButton(this HtmlHelper html, 
    string linkText, int id)
{
    return html.RouteLink(linkText,
     new { ID = id, action = "Delete" },
     new { onclick = "$.delete(this.href, deleteCompleted()); return false;" });
}
Run Code Online (Sandbox Code Playgroud)

显然,我正在使用JavaScript对我的控制器操作执行HTTP DELETE,以防止页面抓取工具意外删除数据以获取我的页面.在我的例子中,我使用delete()方法扩展JQuery以补充HTTP动词.