.net – 如何保持验证DRY?

前端之家收集整理的这篇文章主要介绍了.net – 如何保持验证DRY?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。



使用这种方法查看MVC中的模型: http://www.lostechies.com/blogs/jimmy_bogard/archive/2009/06/29/how-we-do-mvc-view-models.aspx

在我脑海里留下一个没有回答的问题.所以这是关于我清理的时间.

如果我使用自动映射器将域属性映射到dto,那么我明白当dto被映射到保存的域实体时,我的域层可以返回一组验证规则.

但是,我没有看到DRY的方式让客户端验证工作,并将错误添加到模型状态,以便它们对应于视图模型上的正确属性.

干杯

解决方法

我发现了一个相关的问题,有一些有趣的回答:

Mapping Validation Attributes From Domain Entity to DTO

我一直在想这个,在某种程度上,它类似于我们在服务器端和客户端验证的情况. (例如使用NHibernate Validator和jQuery.validate).

这些天,我们非常接受您应该有一整套服务器端验证,并且添加客户端验证是您可以选择的选项,以使您的应用程序更加用户友好.以前,您必须手动实施客户端验证,但是由于可用性的好处,您接受了重复的工作.

我认为我们在这里处理的是非常相似的.您应该在域层中进行验证.您不能依赖消费应用程序来始终自己添加验证.

然后,您的应用程序中可以选择在DTO /视图模型上添加验证.你这样做是因为它更有助于处理视图中的验证错误,而不是让他们进入到可能引发异常或给出不太有用的错误消息的域.关键是从领域来看,你不依赖于这一点.您仍然对系统充满信心,因为您知道是否有任何错误的数据可以通过,您的模型会捕获它.

客户端/服务器的情况是这些天的一个非问题,因为已经做了很多工作来自动化,从服务器端代码生成客户端代码(例如ASP.Net MVC中的ModelValidatorProvider).我相信随着越来越多的人使用视图模式/ DTO,我们将开始看到类似的解决方案,将域验证映射到DTO(it’s already happening with AutoMapper).

所以简而言之,我的(务实而不是理想的))答案是:

接受DRY的违规现在,在两个地方进行验证,并尝试为将来实现自动化的项目做出贡献

猜你在找的asp.Net相关文章