具有MVC贡献的多个ViewModel /单一视图

时间:2011-09-04 22:33:22

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

首先,这不是一个新问题。我的问题实际上是 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&lt;&gt;在视图中调用内联来缓解   铸造成本多次。

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

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

大TIA:)

1 个答案:

答案 0 :(得分:1)

他可能会说的是,而不是

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

您将其分配给变量并稍后使用该变量

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

<%= car.Color %>
<%= car.Make %>