gpt4 book ai didi

asp.net-mvc - DataAnnotations 或在服务中手动验证?

转载 作者:行者123 更新时间:2023-12-03 21:31:28 25 4
gpt4 key购买 nike

每次我开始开发一个新的 ASP.NET MVC Web 应用程序时,我都不确定是否要使用 DataAnnotations验证。感觉有些不对劲。

例如,假设我有一个 UserService通过 CreateUserModel来自 Create AccountController 的行动.为确保用户始终提供名称,我将模型的 Name 设置为拥有 [Required] 的属性属性。现在我知道模型绑定(bind)器永远不会给我一个 CreateUserModel除非它有名字。

我的问题是我的 UserService要成为我系统的可重用组件,它不能依赖上层提供有效数据的事实,并且肯定还必须验证这些数据。当您考虑可能想要编写一个完全重用 UserService 的 Web 服务时,需要进一步强调这一点。 (并且不会让模型绑定(bind)器为其进行所有数据注释验证)。

所以我的问题是:这种情况的最佳做法是什么?使用数据注释进行验证并在服务中重复该验证?仅在服务中验证并抛出异常?两者的混合?

我希望我的问题不是太主观,我主要是想就将验证转移到数据注释是否最终会咬我一口达成共识。

最佳答案

我在服务层执行所有验证,结合使用手动验证(如果 x == y)和使用数据注释。

要在服务层中使用数据注释,您必须手动使用 Validator使用 TryValidateObject() 的类方法。可以看到一个很好的例子here .

然后,您必须将您的验证错误从您的服务层传递到您的 Controller ,并让您的 Controller 将每个错误添加到模型状态错误列表中。

关于asp.net-mvc - DataAnnotations 或在服务中手动验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3747575/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com