在asp.net mvc中使用大量的viewmodel是不好的做法

时间:2011-08-25 04:26:28

标签: asp.net-mvc

一直在研究一个宠物项目,以便更好地学习asp.net mvc。我的问题是关于mvc中的viewmodels。我理解控制器应该处理视图和模型之间的交互。我觉得我不得不创建viewmodel类来组合模型中的信息以传递给视图。

这是不好的做法吗?我应该在其他地方做更多的逻辑并减少视图模型吗?

目前,我几乎每个主要观点都有一个视图模型。但我绝对不希望视图直接访问模型。

5 个答案:

答案 0 :(得分:8)

不,您的所有视图都应该是强类型的,因此对每个视图使用一个视图模型是最佳做法。 Here是关于viewmodels的非常好的文章。

答案 1 :(得分:2)

您使用的视图模型越多越好。视图模型允许您创建单个对象,该对象可以包含模型中不同类型的数据。这些在创建模板时非常有用。此外,这在使用JQuery和Ajax时非常有用,因为它是将数据传递到控制器然后直接传递给DOM的好方法。在我看来,使用尽可能多的viewmodel。

您可能考虑的另一件事是尝试更好地设计您的模型。我个人尝试像sql数据库一样构建我的模型并遵循规范化表单。除了您已有的模型之外,您不必为每个视图创建新的视图模型。如果您需要将信息传递给不属于您正在使用的模型的视图,请使用ViewData或ViewBag。它们作为对象传递,因此您必须将它们转换为适当的类。

答案 2 :(得分:0)

这没什么不好的。你的视图模型越接近视图越好。

模型无法特定匹配View,因此您可以使用ViewModel类。

答案 3 :(得分:0)

这里有很好的答案,这里是我对很多视图模型不成问题的看法。 您的ViewModel是一种很好的方法,可以将纯数据访问对象甚至是域对象与表示层分离,并为您的视图提供这些对象的简化版本。

您的观点应该是愚蠢的,对我个人来说,我试图实现的是将我的域模型按到ViewModel中以供我使用。

答案 4 :(得分:-3)

使用大量的viewmodels会在项目中造成混乱。最好在控制器中创建Tuple然后传递它。