Asp.net mvc 对MVVM和MVC使用相同的模型

Asp.net mvc 对MVVM和MVC使用相同的模型,asp.net-mvc,model-view-controller,mvvm,Asp.net Mvc,Model View Controller,Mvvm,我有一个关于MVVM和MVC的问题。我正在开发一个桌面客户端和Web应用程序。我打算使用WPF(和MVVM)为web应用开发桌面客户端和ASP.NETMVC 我以前从未使用过ASP.NETMVC,尽管我从来没有真正喜欢过Web表单(除了母版页、输出缓存等一些功能),而且我主要使用AJAX(jQuery)和处理程序来填充HTML和处理输入(我想在阅读了关于模式的内容后,我已经接近MVC了,但方式有所不同) 现在,这些应用程序将主要具有相同的输入、报告和数据库。我计划创建一个可以在MVVM和MVC中

我有一个关于MVVM和MVC的问题。我正在开发一个桌面客户端和Web应用程序。我打算使用WPF(和MVVM)为web应用开发桌面客户端和ASP.NETMVC

我以前从未使用过ASP.NETMVC,尽管我从来没有真正喜欢过Web表单(除了母版页、输出缓存等一些功能),而且我主要使用AJAX(jQuery)和处理程序来填充HTML和处理输入(我想在阅读了关于模式的内容后,我已经接近MVC了,但方式有所不同)


现在,这些应用程序将主要具有相同的输入、报告和数据库。我计划创建一个可以在MVVM和MVC中重用的模型。但是在阅读了关于这些模式的各种文章,并分析了ASP.NETMVC代码之后,我怀疑它是否能够实现。在MVVM中,视图从不知道模型,而在MVC中,控制器与视图共享模型。此外,在ASP.Net MVC中,视图(ASPX文件)是从System.Web.MVC.ViewPage派生的,标签/标题是从模型本身填充的

有没有一种方法可以对两个应用程序使用相同的模型

多谢各位

礼节


在MVVM中,视图从不知道模型,而在MVC中,控制器与视图共享模型

不完全正确。在MVVM中,视图绑定到视图模型。与ASP.NET MVC中的完全相同。在ASP.NET MVC中,控制器不与视图共享模型。它共享一个视图模型。它与模型对话,然后构建一个传递给视图的视图模型

与MVVM中的MVC相反,视图可以与模型对话,但这在视图模型中是间接发生的,因此视图和模型都不知道彼此的存在


因此,您可以在桌面客户端应用程序和web应用程序中使用相同的模型。唯一的区别是视图模型。

“在MVVM中,视图永远不知道模型”否。不对。视图与模型绑定。@Will:Nah。正如Darin所描述的,它绑定到VM。@Will-在MVVM中,我们不直接将控件绑定到模型。ViewModel中有用于绑定的桥接属性。@Ritesh:不幸的是,这种错误的信念可能会花费您一些编码时间。@jgauffin::|如果您的模型设计为支持此功能,那么您没有理由不能绑定到模型。如果没有,您可以使用自定义类型描述符来弥补这一差距。该死,你甚至可以通过T4模板为他们自动生成代码。为什么要包装每个模型以将其隐藏在视图中?这是浪费时间。谢谢。下面是VS2010中ASP.NETMVC模板创建的LogOnModel类的一个示例属性<代码>[Required][DataType(DataType.Password)][DisplayName(“Password”)]公共字符串密码{get;set;}这些属性似乎仅适用于ASP.Net MVC。我是否也应该为MVVM保留这些属性?
LogOnModel
不是模型。这是视图模型,因为正如我在正确编写的MVC应用程序的回答中所述,您永远不会将模型传递给视图。只能传递视图模型。模型不应包含任何视图特定属性,例如
DisplayName
。因此,创建一个干净的可重用模型,然后为MVC和桌面应用程序定义视图模型。