将 ViewModel 与 MVC (MVVM) 一起使用时,验证应驻留在 Model 或 ViewModel 上的哪里?(或者两者都或者都不)?为什么?我特别考虑到 ASP.NET MVC V2 即将发布。

复杂/自定义验证怎么样?

有帮助吗?

解决方案

任何业务特定的验证应在模型中。任何网站特定的验证可以在这两个模型和/或视图模型来完成。这样,你的业务逻辑(模型),可背后不同的界面(在Windows,Web窗体等),您的验证移动将保持不变。

其他提示

我想说,通常需要在各个级别进行验证:)

我思考了一会儿以下问题:

  1. 用户输入验证:绝对在控制器上,而不是在任何类型的模型上。例子: 验证码.
  2. 查看在 ViewModel 上验证的相关数据(不是在 ViewModel 中,而是在 ViewModel 上)。例子: 确认密码, 必填邮箱.
  3. 业务规则验证肯定会进入模型验证。例子: 必填邮箱, 折扣券必须有效.
  4. 潜在的用例(故事、场景等)验证。它不验证属性,而是验证整个过程的正确性。应该进行模型验证(或者更好地在单独的层中)。例子: 如果在给定期间未下达订单,则只能在一周内免费获得3个项目.

笔记:我包括了 必填邮箱 分为 2 和 3,因为它通常取决于它所属的位置。
如果电子邮件仅起到提供信息的作用 - 那么可以放松验证并将其推送到视图模型。如果电子邮件是应用程序的强烈要求 - 这绝对是模型验证。

第四件事实际上与我们理解的验证无关。
但它也应该被应用。因此它的结果应该显示给用户。

基本上所有 4 种类型的验证都可以使用相同的基础设施。但实施取决于:)...

干杯,
德米特里。

模型。您的验证应该在你的业务层。您的视图模型应该只是让你的视图设置。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top