【问题标题】:How to pass viewmodel to a layout/master page?如何将视图模型传递给布局/母版页?
【发布时间】:2012-10-18 02:17:20
【问题描述】:

在谷歌上搜索了一段时间后,我对如何在 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?

看了what is the best way to bind ViewModel data to master page in asp.net-mvc,考虑了Darin的回答,但还是觉得这一堆view的布局是一样的,看不出有什么违背DRY原则的理由。

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

    • 我之前写过这个 - 避免查看包。 completedevelopment.blogspot.com/2011/12/… 在发布的主题上,如果需要,使用部分视图或子操作和缓存。
    • 这正是我想要的,但不确定自己是否可以尝试......当我开始与 Sanderson S, Freeman A. 一起学习 mvc 时 - Pro ASP.NET MVC 3 Framework 3ed.,我没有找到任何关于将模型传递给布局的信息。不过,正如我现在所看到的,没有什么可以直接阻止我这样做。非常感谢
    • @AdamTuliper 我不倾向于使用 ViewBag 和 ViewData,但我害怕我不得不......
    • @Pure.Krome,你的表情包是否反对使用 ViewBag/ViewData?或者我没能抓住它..
    • Urgh at ViewBag, etc :( 母版页通常需要很少的数据。在上述场景中(这很常见),母版页有页眉、正文和页脚。因此, 常见的东西是页脚和页眉中的数据,也可能是 master 中的一两个东西。每个网页的大部分都在 body 部分,这是 very 动态的(每个观点都不同)。所以不会有共同的东西可以传递给那个。无论如何,这个答案开始变老了,所以不管你的船是什么。我只是讨厌ViewTeaBag充满激情。
    猜你喜欢
    • 2011-05-22
    • 2014-02-05
    • 2019-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多