作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何避免需要对我的 ViewModel 和业务/域对象重复验证规则?
例如,我可以在我的 ViewModel 上使用 DataAnnotation 属性,这将在我的 MVC 网络应用程序中为我提供客户端和服务器端验证。但是这个 ViewModel 通常会映射到业务/领域对象,并为服务预制一些业务逻辑,这意味着验证将不得不再次发生,通常使用相同或相似的规则。反正有这个吗?
最佳答案
我认为您所描述的是正常且可以接受的。将您的 UI 和数据注释视为友好的 UI 验证,能够立即向用户显示输入数据的任何验证问题。
我认为您的业务/域对象的验证是完整的验证,不仅是验证值,还执行业务规则(即 - 将商品添加到购物车 --> 商品是否有库存?)
然后总是有通常由数据库强制执行的后端验证(即允许列中的空值)。除非您的数据库在所有字段中都允许空值,否则您实际执行的验证不仅仅是您提到的两个地方,我认为这是一件好事。
我认为底线是您可能希望您的业务/域对象强制执行所有验证,而您的客户端和后端验证只执行最基本的验证。
希望对您有所帮助。
关于asp.net-mvc - 如何在不重复代码的情况下实现业务和 View 验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7018006/
我是一名优秀的程序员,十分优秀!