asp.net - 在 ASP.NET MVC 中将复杂数据验证的数据管理规则放在哪里?

标签 asp.net asp.net-mvc validation data-management

我目前正在开发一个 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)?

Asp.Net MVC Validation

DDD:

Validation in a Domain Driven Design

关于asp.net - 在 ASP.NET MVC 中将复杂数据验证的数据管理规则放在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2881821/

相关文章:

jquery - 页面刷新后 SignalR 不向客户端广播数据

javascript - PageMethods 和 UpdatePanel

asp.net-mvc - 区域内的 Asp.Net MVC IgnoreRoute

javascript - ASP.NET MVC - 维护网页的状态

javascript - 为什么 Jquery/ajax 调用 RESTful 服务无法获得成功回调?

c# - 通过 Windows 8 应用商店应用程序让用户登录我的网站

asp.net-mvc - 实时搜索MVC

validation - Laravel - 使用规则集的日期进行日期验证后

asp.net - 正则表达式限制带有换行符的字符串的字符串长度

ios - 如何检查 objective-c 中 pan 卡编辑文本的有效性?