asp.net-mvc - asp.net MVC 3 中 View 模型的范围

标签 asp.net-mvc model-view-controller

我有 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.



然而,Jimmy Bogard 随后对这有多好的解释让我有点疑问。让我的模型只包含客户列表非常容易,我什至可以使用我的 POCO。

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

这是非常耗时的,并且似乎会导致一百万个小的自定义 View 模型 - 有人可以详细说明这种方法的实用性以及为什么更简单的方法不好?

最佳答案

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

  • 更改用户密码时有不同的验证规则,
    更改他的基本数据或订阅设置。有可能
    在一个模型类中定义所有这些规则很复杂。它看起来
    使用不同的 View 模型时会更好更干净。
  • 使用 View 模型还可以为您带来性能优势。如果你
    要显示用户列表,您可以使用 id 和 name 定义 View 模型
    only 并使用索引从数据库中检索它。如果你检索到
    整个对象并将其传递给 View ,您可以从中传输更多数据
    比您需要的数据库。
  • 您可以为 View 模型定义显示和编辑器模板,并使用 html 帮助程序在不同的页面上重用它们。当您为模型 POCO 定义模板时,情况看起来更糟。
  • 关于asp.net-mvc - asp.net MVC 3 中 View 模型的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10317425/

    相关文章:

    javascript - AngularJS 的单对象模型

    asp.net-mvc - 将文件附加/上传到尚未保存的注释 - 对此的最佳策略是什么?

    asp.net-mvc - 使用 Javascript 访问 ASP.NET MVC 模型数据

    asp.net-mvc - 如何检查 MVC cshtml 页面中的 Debug模式

    javascript - 在 MVC 项目中使用 JavaScript 调用 Controller 函数

    .net-core - 在 OS X 上启动 .NET Core 应用程序时出现 OnConnectionAsync 方法问题

    asp.net-mvc - 身份验证处理后,Chrome 不会重定向回 URL

    c# - 使用 ASP.NET MVC 5 的 CheckBoxList

    javascript - Backbone.js - 在哪里存储状态信息?

    asp.net-mvc - MVC 3 保持短网址