2011-08-25 33 views
7

一直在一边的宠物项目工作,以更好地学习asp.net mvc。我的问题是关于mvc中的viewmodels。我明白控制器应该处理视图和模型之间的交互。我觉得我一直不得不创建viewmodel类来将来自模型的信息传递给视图。是不是很好的做法,在asp.net中使用大量的viewmodels mvc

这是不好的做法?我是否应该在别处做更多的逻辑并减少视图模型?

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

回答

6

不,所有的视图应该是强类型的,所以对每个视图使用一个视图模型是最佳实践。 Here是关于viewmodels的非常好的文章。

+0

重要的答案。那篇文章很好地总结了它。这基本上是我目前正在做的。谢谢。 – Deekane

2

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

您可能会考虑的另一件事是尝试更好地设计您的模型。我个人试图建立我的模型就像一个SQL数据库,并遵循规范化形式。除了已有的模型之外,您不必为每个视图创建新的视图模型。如果您需要将信息传递给不属于您使用的模型的视图,请使用ViewData或ViewBag。这些作为一个对象传递,所以你必须将它们投射到适当的类。

0

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

模型无法专门匹配View,所以您使用ViewModel类。

0

在这里有很好的答案,这里是我的观点,为什么很多视图模型不是问题。 您的ViewModels是将纯粹的数据访问对象甚至是您的域对象与您的表示层分离开来的好方法,并为您的视图提供这些对象的虚拟版本以供使用。

你的意见应该是愚蠢的,对我个人而言,我试图实现的是将我的领域模型按摩到ViewModel中以供我的视图使用。

-3

使用大量的viewmodels会在您的项目中产生混乱。在控制器中创建一个Tuple然后通过它会好得多。

相关问题