对.net MVC查看模型和模型感到困惑

时间:2012-02-24 05:41:49

标签: asp.net-mvc mvvm

所以,我读过一些关于.net和MVC的内容。我记得读过一些建议在MVC中使用ViewModels的东西。这有助于减少让视图弄乱应该由控制器控制的数据的愿望。

我认为这是MVVM模式所指的。显然,在查看之后,实现实际上完全取消了控制器。不完全是我想要做的。

在我的情况下使用ViewModel仍然合法吗?是更好的做法还是只是不必要的工作?你将ViewModels目录/命名空间放在哪里?在Models目录下?

模型了解ViewModels是否合法?例如,你有一个Model返回一个ViewModel到控制器?

3 个答案:

答案 0 :(得分:2)

默认情况下,ViewModel不是MVC项目中的。如果你认为将视图与模型“更容易”结合起来对你有益,那么你需要添加它。

http://rachelappel.com/use-viewmodels-to-manage-data-amp-organize-code-in-asp.net-mvc-applications

ViewModel的概念不仅适用于ASP.NET MVC,因为您将在关于MVC,MVP和MVVM模式的文章和博客文章中看到整个Web中对ViewModel的引用。这些帖子和文章可以围绕任何数量的技术,如ASP.NET,Silverlight,WPF或MVC ...本文将研究ViewModels,因为它们适用于ASP.NET MVC世界。

http://msdn.microsoft.com/en-us/magazine/ff798279.aspx

答案 1 :(得分:1)

我认为设计模式不是严格的概念,而是帮助您更好地构建应用程序的指南。 Model-View-ViewModel(MVVM)设计模式源于WPF,其中有一个非常强大的Bata Binding框架,可以促进模式。这个想法是你的模型中有业务数据,但由于经常查看不属于模型的特定数据(即树控件中当前选定的项),因此创建了包装模型的视图模型对象,但视图模型还包含视图特定的状态数据。因此,您的视图可以直接绑定到视图模型而不是模型对象,从而保持模型清洁(易于测试,维护等)。

Asp.net MVC的不同之处在于,视图中的数据绑定远不如WPF中那么强大。在WPF中,您实际上可以通过数据绑定实现大部分GUI和模型数据交互,这使得视图模型很有用。但是在Asp.net MVC中,你的控制器是为处理这个而设计的,并且由于数据绑定接近于不存在,我只是看不到在Asp.net MVC中使用视图模型包装器的价值。

答案 2 :(得分:1)

模型和ViewModel是不同的。不要将ViewModel与MVVM模式混淆。

使用视图模型可以使模型和视图之间的交互更加简单。模型有时可能过于复杂,其他模型对象作为成员,可以将模型对象作为成员等。

通过使用视图模型,您可以很好地简化视图处理的内容。这也将过滤掉intellisense中可以看到的内容,因此如果您开发模型的人不同于处理视图的人,那么创建一个简单的视图模型可以使那些只处理UI的人更容易。