【问题标题】:Multiple ViewModels/Single View with MVC Contrib使用 MVC Contrib 的多个 ViewModel/单个视图
【发布时间】:2011-09-04 22:33:22
【问题描述】:

首先,这不是一个新问题。我的问题实际上是 gWiz 提供的答案之一的后续问题。他的帖子/答案的链接在这里:

Multiple models sent to a single view instance

另一种方法是不要强类型化视图和 页面指​​令中的母版页,而是使用 来自 MVC Contrib 的基于通用类型的 ViewData 扩展。这些 扩展基本上使用完全限定的类型名称作为 ViewData 字典键。实际上,打字的好处与 强类型页面方法,在 所需的视图模型类的数量。然后在你的行动中做

ViewData.Add<Car>(car); ViewData.Add<LayoutAData>(layoutAData);

在你所做的视图中

<%= ViewData.Get<Car>().Color %>

在你的母版页中

<%= ViewData.Get<LayoutAData>().Username %>

您可以在视图中内联缓存这些 Get 调用以减轻 多次铸造的成本。

我的问题是关于最后一条评论:如何在视图中“缓存”get 调用?视图不是每次都被销毁和创建吗?

我确实尝试搜索示例,但也许我没有问正确的问题?

【问题讨论】:

    标签: asp.net-mvc model-view-controller mvccontrib


    【解决方案1】:

    他可能想说的是,而不是

    <%= ViewData.Get<Car>().Color %>
    <%= ViewData.Get<Car>().Make %>
    

    你把它赋值给一个变量,以后再使用这个变量

    <% var car = ViewData.Get<Car>(); %>
    
    <%= car.Color %>
    <%= car.Make %>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-06
      • 2013-01-07
      • 1970-01-01
      • 2015-06-27
      • 2014-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多