我目前正在开发一个 ASP.NET MVC2 项目。这是我第一次开发真正的 MVC Web 应用程序。 ASP.NET MVC website确实帮助我快速入门,但我仍然对数据模型验证有一些晦涩的知识。
我的问题是,当涉及复杂的验证规则时,我真的不知道在哪里管理填充的数据模型。例如,使用正则表达式验证字符串字段非常简单,我知道我只需要使用特定属性来装饰我的字段,因此数据管理规则在模型中实现。但是,如果我有多个字段需要相互验证,例如需要按照特定时间规则正确设置多个日期时间,我需要在哪里验证它们?我知道我可以创建自己的验证属性,但有时验证会询问特定的验证路径,该路径对于使用属性进行验证来说非常复杂。
第一个问题也引出了一个相关的问题,即在 Controller 中验证模型是否正确?因为目前这是我发现复杂验证的唯一方法。但我发现这有点脏,我觉得它并不真正适合 Controller 角色,并且更难以测试(多个代码路径)。
谢谢。
注意:我在这里得到了一些非常好的解决方案,但我正在等待其他想法和一些“最佳实践”解决方案。
最佳答案
super 骗子。 super 主观。“在哪里以及如何使用 MVC 进行验证”的争论已经被打败,但没有得出直接的答案。对于每个开发商/商店来说,这都是非常主观和哲学性的,以至于每个人几乎不可能在任何事情上达成一致。
另一个问题是,即使验证工具也有多种形状和大小,并且可以在不同的范围和层中运行。验证工具的多样性几乎让人疯狂。 if( someString != "") 怎么变得这么难? ;)
如果您阅读这些其他答案,您很快就会发现根本没有最佳实践。一旦您进入领域驱动设计原理并讨论无效状态和对象,您会发现讨论变得更加复杂。
Where do you do your validation? model, controller or view
ASP.NET MVC 2 validation using DTOs instead of domain entities
Does ASP.Net MVC 2 validation need some more thought in terms of patterns and use?
Mapping Validation Attributes From Domain Entity to DTO
Which validation library for ASP.NET MVC?
ASP.NET MVC - User Input and Service/Repository - Where to do Validation?
ASP.NET MVC: Is Data Annotation Validation Enough?
MVC - where to implement form validation (server-side)?
DDD:
关于asp.net - 在 ASP.NET MVC 中将复杂数据验证的数据管理规则放在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2881821/