在ASP.NET MVC2中使用具有部分视图的模型的正确方法是什么?

时间:2010-11-15 06:31:49

标签: model-view-controller asp.net-mvc-2 viewmodel partial-views

我对MVC很陌生,但现在对模式非常熟悉,特别是发现ViewModels是控制器和视图之间的绝佳桥梁。

然而,我现在将不得不使用部分视图,并且有点困惑。

要求

好的,在Wire Frames中,我们有许多不同的页面,但它们共享一个共同的“网格”。

网格将是部分视图,并且将始终呈现/使用/操作相同类型的数据。

问题

因此,包含局部视图的主视图将具有不同的模型......所以如何在局部视图中处理模型。

使用该特定部分视图的所有视图模型是否都应将部分视图的嵌套模型作为属性?

这里最好的做法是什么?

酷,欢呼声

1 个答案:

答案 0 :(得分:2)

我发现当我将Partial组合在一起时,如果我考虑那个Partial的模型是什么,那将会非常有用。我几乎总能发现,如果我花点时间考虑一下,部分的可重用性会增加很多。

Partial通常应该使用整个View模型中的一些自然子集或数据变体。当你创建一个Partial时,考虑到这一点,不得不过多考虑“我应该使用什么模型”,这通常表明你应该创建一个不同的部分,而不是试图重用一个。

如果您不得不为Partial重新构建新模型,我认为问题可能是您的整个View模型未涵盖您需要的所有内容。

尽管如此;很多时候我有一个使用模型的Partial,它似乎与整个View模型分开。但大多数情况下,这些模型是新的/空对象 - 不是那些需要实例化并具有属性设置的对象(这通常发生在与Ajax相关的更新中使用的Partial)

请注意,MVC2也有这方面的东西; Html.RenderAction()允许您调用一个全新的Action(它有自己的Model)并在当前View中呈现它。我试图避免使用它,我自己,实际上...但对我来说,比试图为某个部分“构建”一些新模型,或者在当前ViewModel中添加非自然信息感觉更好。