我需要在Site.Master中编写一个菜单,其中某些菜单项必须是可见的,具体取决于当前用户角色。如何从页面查看? 通常只会在控制器中编写逻辑,但Site.Master没有(至少在我的项目中!)。我很感激任何指针。
答案 0 :(得分:5)
使用HttpContext.Current.User。
从您的视图/部分视图/母版页中始终可以看到。
例如,要显示给定角色的不同html,比如MyRole,您只需写:
<% if(HttpContext.Current.User.IsInRole("MyRole")) { %>
// tags for MyRole
<% } else { %>
// tags for other users
<%} %>
这很好,因为它是属于View(或母版页)的“显示逻辑”,而不是属于控制器的“应用程序逻辑”。
请注意,视图只是模板。你可以在不弄乱整洁的MVC模式的情况下编写代码,只要它只是显示逻辑。
视图或母版页“没有控制器”。它们只是控制器可以找到和使用的模板。