Qco*_*com 87 asp.net-mvc model viewmodel asp.net-mvc-2
好的,我一直听到有关MS的ASP.NET MVC的"ViewModels"的讨论.
现在,这是一种特定的模型,对吗?不是特定的视图.
根据我的理解,它是一种具有与View交互的特定目的的模型?或类似的东西?
一些澄清将不胜感激.
Lor*_*nzo 66
本质上,模型和视图模型都是带有属性的简单类.
这些类的主要目的是描述("模型化")各自受众的对象,分别是控制器和视图.
所以当你说的时候你完全正确
根据我的理解,它是一种具有与View交互的特定目的的Model
因此,虽然Model类实际上是应用程序与之交互的域实体,但View Models是您的视图与之交互的简单类.
希望能帮助到你 :)
更新:
Microsoft已经开发了Martin fowler的专门版本的Presentation Pattern,主要基于模型 - 视图 - 控制器,并称其为PF应用程序的Model-View-ViewModel(MVVM).此模式针对现代UI开发平台,其中UI开发人员对业务逻辑的要求与传统开发人员不同.看看这里的一些理论
Jas*_*ell 64
用最简单的术语来说,我想考虑以下几点:
型号:严格的外观和感觉就像您的数据模型.对于所有意图和目的,它只是数据模型的类表示.它不了解您的视图或视图中的任何元素.也就是说,它不应包含您将用于View的任何属性装饰器(即;必需,长度等).
视图模型:用作View和模型之间的数据绑定器,在许多情况下,它也是模型的包装器.如果没有View,它将变得无用,因此它通常不能像标准模型那样在多个视图和控制器之间重复使用.
例如,您的Model可能具有以下属性,这些属性是数据源的直接表示:
public string FirstName { get; set; }
public string LastName { get; set; }
Run Code Online (Sandbox Code Playgroud)
现在,由于View Model与View相关联,因此它可能具有以下属性 - 它将Model的FirstName字段和LastName字段连接在一起作为一个字符串:
[Display(Name = "Customer Name")]
public string CustomerFullName { get { return String.Format("{0} {1}", myModel.FirstName, myModel.LastName) }}
Run Code Online (Sandbox Code Playgroud)
mis*_*dan 26
我发现这篇文章是一个非常有用的资源,用于理解"域模型"和"视图模型"如何在MVC应用程序中进行交互,特别是在绑定方面.最重要的是包括示例而不是抽象描述.
"自从MVC发布以来,我发现很多关于如何最好地构建视图模型的混淆.有时这种混淆并非没有充分的理由,因为似乎没有关于最佳实践建议的大量信息.此外,没有作为银弹的"一刀切"解决方案.在这篇文章中,我将描述一些已经出现的主要模式以及每种模式的优缺点.重要的是要注意这些模式中的许多模式.从解决现实世界问题的人中脱颖而出."
http://geekswithblogs.net/michelotti/archive/2009/10/25/asp.net-mvc-view-model-patterns.aspx
Ian*_*cer 19
WikiPedia对模型与模型视图的描述比SO答案更完整:http://en.wikipedia.org/wiki/Model_View_ViewModel
我引用:
模型:与经典MVC模式一样,模型指的是(a)表示真实状态内容的对象模型(面向对象的方法),或(b)表示该内容的数据访问层(数据 -中心方法).
视图:与经典MVC模式一样,视图指的是GUI显示的所有元素,如按钮,窗口,图形和其他控件.
视图模型:在ViewModel是一个"查看模型",也就是说它是也服务于数据的视图和模型之间的结合观的抽象.它可以被视为控制器(在MVC模式中)的一个专门方面,它充当数据绑定器/转换器,将模型信息更改为视图信息并将命令从视图传递到模型中.ViewModel公开公共属性,命令和抽象.ViewModel被比作数据的概念状态,而不是模型中数据的真实状态.
有一个ViewModel的概念,但它通常不与Asp.net MVC相关联.MVC使用模型视图控制器图案,其中,所述控制器处理的相互作用,从模型构建了数据,然后传送该数据到视图以用于显示.
ViewModel(和Model View ViewModel模式)通常与Silverlight和WPF相关联.Xaml有点不同,因为视图可以对ViewModel进行双向绑定,因此技术有点不同.例如,如果将文本框绑定到字段,则在键入该文本框时,字段的值将动态更新.由于网页是无状态的,因此在网页中实际上不可能进行这种交互.
两种模式的相似之处在于它们都试图将逻辑与显示分开.最常见的用途/原因是测试:您希望能够从代码(通过测试框架)执行用户将通过用户界面调用的所有交互.
| 归档时间: |
|
| 查看次数: |
73660 次 |
| 最近记录: |