asp.net-mvc – asp.net MVC 3中视图模型的范围

我有 read online使用“厨房水槽”模型是不好的做法:

Rule #3 – The View dictates the design of the viewmodel. Only what is
required to render a View is passed in with the viewmodel.

If a Customer object has fifty properties,but one component only
shows their name,then we create a custom viewmodel type with only
those two properties.

然而,吉米·博加德随后解释这是如何好的,这让我有点质疑.让我的模型只包含一个客户列表是非常容易的,我甚至可以使用我的POCO.

那么现在我可以为网站上的每个页面创建自定义的小视图模型片段?使用Customer属性的每个页面都会获得一个,但当然无法共享,因为某些信息是无关的,例如,如果一个页面使用的是Age而不是Name.两个新的迷你视图模型类对吗?

这是非常耗时的,似乎它会导致一百万个小型自定义视图模型 – 有人可以详细说明这种方法的效用以及为什么更简单的方法是坏的?

解决方法

View模型类不仅可以用于传递值,还可以定义数据类型(数据注释),验证规则和关系,而不是模型中使用的数据类型.我现在想到的一些优点:

>更改用户密码时有不同的验证规则,更改他的基本数据或他的订阅设置.有可能很复杂,在一个模型类中定义所有这些规则.它看起来使用不同的视图模型时更好更清洁.>使用视图模型还可以为您提供性能优势.如果你要显示用户列表,可以使用id和name定义视图模型仅使用索引从数据库中检索它.如果你找回了整个对象并将其传递给视图,您从中传输更多数据数据库比你需要的.>您可以为视图模型定义显示和编辑器模板,并使用html帮助程序在不同页面上重复使用它们.当您为模型POCO定义模板时,情况看起来更糟.

相关文章

### 创建一个gRPC服务项目(grpc服务端)和一个 webapi项目(...
一、SiganlR 使用的协议类型 1.websocket即时通讯协议 2.Ser...
.Net 6 WebApi 项目 在Linux系统上 打包成Docker镜像,发布为...
一、 PD简介PowerDesigner 是一个集所有现代建模技术于一身的...
一、存储过程 存储过程就像数据库中运行的方法(函数) 优点:...
一、Ueditor的下载 1、百度编辑器下载地址:http://ueditor....