Kru*_*lur 11 asp.net-mvc web-applications mvvm knockout.js
当我读"ASP.NET MVC 4"这本书时,我想知道MVVM.我开始谷歌搜索,无法找到任何关于使用MVVM开发Web应用程序的书籍,所以我必须在这里遗漏一些信息.
据我所知,MVVM通过knockout.js和其他框架在客户端的Web应用程序中使用.但是,如果我要开发Windows Phone应用程序,我可以直接使用MVVM而不使用MVC.这是否意味着,MVVM /数据绑定的概念不适用于客户端 - 服务器Web应用程序?
Chr*_*att 15
MVVM实际上是一种子模式.那里并没有真正的"MVVM"Web应用程序框架.它们都是MVC,如果你想要的话,你几乎只需要一个视图模型.
特别是在ASP.NET MVC中,您只需创建一个类,通常使用[Model Name]ViewModel或者形式的名称 [Model Name]VM.该类将只包含您需要使用的模型中的属性以及任何额外的内容,这些内容对于实际的数据库支持的模型(如SelectLists等)没有意义.
在您的操作中,您只需将此视图模型的实例传递给视图而不是模型:
return View(viewModelInstance);
Run Code Online (Sandbox Code Playgroud)
当然,请确保您的观点接受:
@model Namespace.To.MyViewModel
Run Code Online (Sandbox Code Playgroud)
唯一稍微复杂的部分是将视图模型连接到模型(即,从视图模型/模型获取数据.您可以通过显式映射属性来手动执行此操作,或者您可以使用类似AutoMapper的内容.
MVVM 是 WPF/Silverlight 开发的标准设计模式,不应与 ASP.Net 开发的 MVC 混淆。
两者听起来可能相似并共享一些共同点,但它们是两种不同的设计模式。
根据我对 Knockout.js 的了解,它旨在创建类似于您在 WPF/Silverlight 开发中使用的“数据绑定”,这就是 MVVM 设计模式适用于那里的原因。
引用我关于 MVVM 和 MVC 之间差异的另一个答案
在MVVM 中,您的代码类 (
ViewModels) 是您的应用程序,而您Views的只是一个非常用户友好的界面,它位于应用程序代码之上并允许用户与其交互。这意味着ViewModels它们的工作量很大,因为它们是您的应用程序,负责从应用程序流到业务逻辑的所有内容。使用MVC,您
Views就是您的应用程序,而您Controller处理应用程序流程。应用程序逻辑通常在 中找到ViewModels,它被认为是 MVC 中 M 的一部分(旁注:MVC 中的 M 不能被视为与 MVVM 中的 M 相同,因为 MVC 的 M 层包含比 MVVM 的 M 层更多的功能)。给用户一个屏幕 (View),他们与之交互,然后向 提交一些内容Controller,然后Controller决定谁对数据执行什么操作,并向用户返回一个新的视图。
MVC 是一种单向数据绑定系统。
填写您的中号在奥德尔Ç ontroller,然后把它传给V IEW。
MVVM 是一种双向数据绑定。
填写您的中号奥德尔,用它在V IEW,当V IEW状态的变化,您的中号奥德尔自动更新(反之亦然)