如何将viewmodel传递给布局/母版页?

hor*_*rgh 14 c# master-pages asp.net-mvc-3

谷歌搜索了一段时间后,我对如何在asp mvc 3中这样做有点困惑.

因此,任务是为几个控制器的视图提供一个公共布局(或主?)页面.所有视图都是强类型的...这个布局页面实际上可视化一些强类型的对象.所以,我需要将这个对象传递给布局页面,将它传递给`Html.RenderPartial()'或者在页面中正确呈现它.

文章将数据传递给查看母版页(C#)(虽然是mvc2的旧版本)提供了一个示例来提供基本抽象控制器类,并将模型传递给ViewData.这可能是治愈方法.

但...

在某些线程中,我找到了一种可以创建强类型母版页的方法:

<%@ Master ... Inherits="System.Web.Mvc.ViewMasterPage<MyWeb.Models.Client>" %>
Run Code Online (Sandbox Code Playgroud)

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

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

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

Pur*_*ome 17

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

我使用了ViewBags所以我有所有视图层的视图模型.从_layout.cshtml向上开始.任何使用布局的视图..那个...视图模型只是继承了布局..或者它下面的任何视图..并且这一直重复,直到你达到底层,通常是_layout ...

我的RavenOverflow项目有一些示例代码.

  • 在ViewBag上等等:(主页面通常只有很少的必需数据.在上面的场景中(这很常见),主页面有一个页眉,正文和页脚.因此,常见的东西是数据在页脚和页眉,也许是主人的一两件事.每个网页的大部分都在*body*部分,*非常*动态(每个视图都与另一个不同).所以没有通用的东西可以通过无论如何,这个答案已经开始变老,所以不管你的船是什么漂浮.我只是热情地讨厌`ViewTeaBag`. (2认同)