从代码中添加和删除数据注释

发布于 2024-09-14 19:02:44 字数 146 浏览 6 评论 0原文

是否可以从代码方面添加和删除 DataAnnotations,特别是 [requried]?我的问题是,我想让用户能够在 CRUD 应用程序中保存不完整的表单,但同时使用 DataAnnotations 验证的功能。

如果这是不可能的,我能采取的最佳方法是什么?

Is there away to add and remove DataAnnotations, in particular the [requried], from the code side of things? My problem is that I want to give the user the ability to save an incomplete form in our CRUD applications but at the same time use the power of the DataAnnotations validation.

If this is not possible, what is the best way I can go about this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

哑剧 2024-09-21 19:02:44

您可以在模型上保留 DataAnnotation 属性,然后根据需要从代码中手动清除验证错误。它可能看起来像这样:

if (certainCondition == true) {
   ModelState["someKey"].Errors.Clear();
   ModelState["anotherKey"].Errors.Clear();
}

You can keep the DataAnnotation attributes on your model and then just manually clear the validation errors as needed from code. It might look something like this:

if (certainCondition == true) {
   ModelState["someKey"].Errors.Clear();
   ModelState["anotherKey"].Errors.Clear();
}
枯寂 2024-09-21 19:02:44

不可能动态添加、删除或修改 DataAnnotations,因为它们是属性。属性是类型的一部分,不能在运行时更改。

您可以按照 Larsenal 的建议使用 ModelState,前提是:

  • 在执行验证后使用它。 (在此之前,ModelState 将为空。它不提供对所有验证器的访问,它只在发生验证器错误后存储验证器错误)
  • 您没有任何基于 DataAnnotationValidators 的客户端验证,并会引发阻止错误的错误您甚至无法到达服务器端验证。

It is impossible to add, remove or modify DataAnnotations dynamically since they are Attributes. Attributes are part of the type and can't be changed during runtime.

You could use ModelState as Larsenal suggested provided that:

  • you use it After validation has executed. (prior to that, ModelState will be empty. It doesn't provide access to all validators, it only stores validator-errors after they've occurred)
  • you don't have any clientside validation that's based on the DataAnnotationValidators and fires errors that prevent you from even reaching the serverside validation.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文