15

谷歌搜索了一段时间后,我对如何在 asp mvc 3 中执行此操作有点困惑。

因此,任务是为多个控制器的视图提供一个通用布局(或母版?)页面。所有的视图本身都是强类型的......这个布局页面实际上可视化了一些强类型的对象。因此,我需要将此对象传递给布局页面,以将其传递给“Html.RenderPartial()”或直接在页面中呈现。

Passing Data to View Master Pages (C#)一文(尽管对于 mvc2 来说是旧的)给出了一个示例来提供一个基本的抽象控制器类,将模型传递给ViewData. 这可能是治疗方法。

但...

在某些线程中,我发现了一种可以制作强类型母版页的方法:

<%@ Master ... Inherits="System.Web.Mvc.ViewMasterPage<MyWeb.Models.Client>" %>

那么,在 mvc3 中是否有相同的方法?或者将数据传递到布局页面的唯一方法是使用 ViewBag 或 ViewData?

阅读了在 asp.net-mvc 中将 ViewModel 数据绑定到母版页的最佳方法是什么,我考虑了 Darin 的回答,但仍然认为这堆视图将具有相同的布局,并且没有理由反对 DRY原则。

那么,如何将强类型对象传递给布局页面呢?还是我混淆了什么?

4

1 回答 1

18

这是一个有趣的辩论主题 -> 传递view models到母版页/布局与ViewBags.

我讨厌使用ViewBags,所以我的所有视图层都有视图模型。从_layout.cshtml和向上开始。任何使用 Layout 的视图 .. 好吧 .. 该视图模型只是继承 Layout .. 或它下面的任何视图 .. 重复此操作,直到您到达通常是 _layout 的底层...

我的RavenOverflow 项目有一些示例代码显示了这一点。

于 2012-10-18T02:50:57.347 回答