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

时间:2010-08-18 19:51:09

标签: c# data-annotations

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

如果无法做到这一点,我最好的方法是什么?

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

由于它们是属性,因此无法动态添加,删除或修改DataAnnotations。属性是类型的一部分,在运行时不能更改。

您可以使用ModelState作为Larsenal建议提供:

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