Model view controller 在ASP.NET MVC2中使用带有局部视图的模型的正确方法是什么?

Model view controller 在ASP.NET MVC2中使用带有局部视图的模型的正确方法是什么?,model-view-controller,asp.net-mvc-2,viewmodel,partial-views,Model View Controller,Asp.net Mvc 2,Viewmodel,Partial Views,我对MVC还很陌生,但现在对这种模式感觉很舒服,尤其是发现ViewModels是控制器和视图之间的一座极好的桥梁 然而,我现在不得不使用局部视图,我有点困惑 要求 好的,在线框中我们有许多不同的页面,但是它们共享一个共同的“网格” 网格将是局部视图,并且将始终呈现/使用/操作相同类型的数据 问题 因此,包含局部视图的主视图将具有不同的模型。。。那么如何从局部视图中处理模型呢 使用该局部视图的视图的所有模型是否应将该局部视图的嵌套模型作为属性 这里的最佳实践是什么 我发现,当我把一个部分放在一起时

我对MVC还很陌生,但现在对这种模式感觉很舒服,尤其是发现ViewModels是控制器和视图之间的一座极好的桥梁

然而,我现在不得不使用局部视图,我有点困惑

要求 好的,在线框中我们有许多不同的页面,但是它们共享一个共同的“网格”

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

问题 因此,包含局部视图的主视图将具有不同的模型。。。那么如何从局部视图中处理模型呢

使用该局部视图的视图的所有模型是否应将该局部视图的嵌套模型作为属性

这里的最佳实践是什么


我发现,当我把一个部分放在一起时,如果我考虑那个部分的模型,它会非常有用。我几乎总是发现,如果我花一点时间考虑,部分的可重用性会大大增加。

局部视图通常应在整个视图的模型中使用某些自然子集或数据的变化。当你开始创建一个分部时,你必须考虑太多“我的分部应该使用什么模型”,这通常意味着你应该创建一个不同的分部,而不是试图重复使用一个分部

如果您必须为局部视图重新构建一个新模型,我认为问题可能在于您的整个视图的模型没有覆盖您需要的所有内容

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


不过,请注意,MVC2也有这样的功能
Html.RenderAction()
允许您调用一个全新的操作(它有自己的模型)并在当前视图中呈现它。我尽量避免使用它,实际上我自己。。。但对我来说,这比尝试为局部“构建”一些新模型或在当前ViewModel中添加不自然的信息感觉更好。

您能举一个“视图”/“局部视图”/“模型”的例子,这样我们就可以帮助您实现最佳实践。您好。视图是具有模型并与动作关联的完整视图。局部视图是一个可重用的视图片段,可以嵌入到具有潜在不同模型的不同视图中。模型是一个完整的数据结构,它包含了视图从控制器中可能需要的所有内容,反之亦然。+非常好的建议,谢谢。是的,我在想也许子集的想法会是最好的……例如,在局部中发生的一个非常常见的“子集”是在主模型中的列表中呈现的单个实体对象。当然,有时它可能只是ViewModelcool的一个成员。。。。创建一个具有局部视图使用的属性的父模型,然后创建一个从父模型继承的子模型(所有使用局部视图的主视图都继承了父模型),这是否正常。。。。这有意义吗?干杯如果您必须在每个主视图模型中满足部分视图的要求,那么部分视图背后的意义是什么?部分视图真的只是共享的“视图”或cshtml文件吗?它们不应该拥有自己的任何模型或控制器吗?@Enginer部分视图的目的是封装和重用常见的UI代码块。正确地使用Partials可以节省您的代码,即使您必须“迎合”它们。这就是“诀窍”:如果你想通过使用它们来节省足够的代码,那么就这样做。如果没有,就不要。