如何将ASP.NET MVC中的强类型对象放入母版页?
您是否有一个包含母版页信息的ViewModelBase
类,并为每个视图模型继承它,还是有更好的方法?
答案 0 :(得分:10)
亚历,
我认为你问的是,“我的母版页控制器在哪里?”
查看以下链接。它解释了如何创建“应用程序控制器”,这是一个可以由其他控制器继承的抽象类,这样您只需编写一次代码就可以将所需的母版页数据推送到视图中。
将数据传递到查看母版页:
http://www.asp.net/learn/MVC/tutorial-13-cs.aspx
另外,请看下面的链接,它解释了如何在ASP.NET MVC中实现部分视图和子控件:
ASP.NET MVC中的部分请求
http://blog.codeville.net/2008/10/14/partial-requests-in-aspnet-mvc/
答案 1 :(得分:3)
这正是我使用的方法。拥有一个MasterViewData基类,其中包含可能对所有页面通用的信息,并用于呈现母版页(在不使用内置身份验证,页面级消息时登录用户)。我的所有其他视图数据类都来自它。
我也做罗伯特提到的:我有一个基本控制器类来覆盖View方法,该方法实际上处理将一些母版页信息放入viewdata类。
我很好奇是否有其他选择,但这种方法对我来说肯定很有效。
答案 2 :(得分:0)
我们使用类似的基本ViewData,特别是对于大型面向内容的公共网站,您可以在其中获得大量常见的UI内容。
我们用来注入公共位的技巧是使用ActionFilter在我们的控制器返回周围注入MasterPageViewModel。这比使用带有重写视图方法的特殊控制器类要清晰得多,因为肯定有些地方你不需要/不需要它。而整个构成超过继承的东西。