如何在Site.Master页面上检查当前用户角色?

pkl*_*ski 2 asp.net-mvc site.master

我需要在Site.Master中编写一个菜单,其中某些菜单项必须是可见的,具体取决于当前用户角色.如何从页面查看?通常只会在控制器中编写逻辑,但Site.Master没有(至少在我的项目中!).我很感激任何指针.

awr*_*ley 5

使用HttpContext.Current.User.

从您的视图/部分视图/母版页中始终可以看到这一点.

例如,要显示给定角色的不同html,比如MyRole,您只需编写:

<% if(HttpContext.Current.User.IsInRole("MyRole")) { %>

    // tags for MyRole

<% } else { %>

    // tags for other users

<%} %>
Run Code Online (Sandbox Code Playgroud)

这很好,因为它是属于View(或母版页)的"显示逻辑",而不是属于控制器的"应用程序逻辑".

请注意,视图只是模板.你可以在不弄乱整洁的MVC模式的情况下编写代码,只要它只是显示逻辑.

视图或母版页不"有控制器".它们只是控制器可以找到和使用的模板.