我使用ActiveRecord开发了自己的自定义用户和角色对象,这些对象不扩展默认的Asp.Net提供程序,因此我无法从HttpContext中获取用户。我可以创建一个自定义的htmlhelper来呈现菜单,但我的视图是否应该呈现菜单或母版页?
如果是主页面,我如何传递给当前用户之类的自定义htmlhelper,因为某些菜单项取决于用户角色。
另外,如何检测母版页中正在查看的控制器?
答案 0 :(得分:2)
1)如果您的菜单功能应该存在于多个页面上,那么将它放在母版页中是有意义的。如果没有,那么正常视图。
2)一个流行的选择是让所有ViewModel继承自基础视图类,然后您的母版页使用它。例如:
System.Web.Mvc.ViewMasterPage<ViewBase>
System.Web.Mvc.ViewPage<MyViewModel>
public class MyViewModel : ViewBase { }
3)您可以从路径数据中提取特定控制器。但是,如果您需要特定控制器的特定功能,我建议您为这些视图使用不同的母版页,而不是尝试使所有视图使用相同的母版页。
答案 1 :(得分:1)
通常,所有ASP.NET控件(无论是WebForms还是MVC)都应该控制自己的状态。
在处理导航的情况下,我想创建一个.ASCX(局部视图)并将其放在主页面上。让部分视图根据HttpContext控制它的显示方式。