应该查看渲染菜单或母版页

时间:2010-06-11 15:06:26

标签: c# .net asp.net-mvc master-pages

我使用ActiveRecord开发了自己的自定义用户和角色对象,这些对象不扩展默认的Asp.Net提供程序,因此我无法从HttpContext中获取用户。我可以创建一个自定义的htmlhelper来呈现菜单,但我的视图是否应该呈现菜单或母版页?

如果是主页面,我如何传递给当前用户之类的自定义htmlhelper,因为某些菜单项取决于用户角色。

另外,如何检测母版页中正在查看的控制器?

2 个答案:

答案 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控制它的显示方式。