数据注释-基于代码中的条件删除EntityValidation

本文关键字:条件 EntityValidation 删除 代码 注释 于代码 数据 | 更新日期: 2023-09-27 18:26:36

我的模型中有一列是必需的

[Required(ErrorMessage = "The Name field is required")]
public string Name{ get; set; }

但是,是否只有在不同的条件下才需要。

因此,当满足正确条件时,我删除ModelState密钥

if (Status_ID != 2 && Status_ID != 3)
{
    ModelState.Remove("Name");
}

这是有效的,但当EF试图保存实体时,我会得到一个EntityVaildationError,因为我猜我在属性上有Data Annotation"必需",无论ModelState 如何,都无法通过编程删除

否则我怎么能实现我想要的?

干杯

数据注释-基于代码中的条件删除EntityValidation

这在现有的RequiredAttribute中是不可能的。

但是,您可以实现自己的自定义条件验证属性。

这里有一些链接可以引导您朝着正确的方向前进:

http://blogs.msdn.com/b/simonince/archive/2010/06/04/conditional-validation-in-mvc.aspxhttp://blogs.msdn.com/b/simonince/archive/2011/02/04/conditional-validation-in-asp-net-mvc-3.aspxhttp://blogs.msdn.com/b/simonince/archive/2011/09/29/mvc-validationtookit-alpha-release-conditional-validation-with-mvc-3.aspx

一旦您实现了自定义RequiredIf条件验证属性,您就可以设置如下条件:

public class ValidationSample
{
   [RequiredIf("PropertyValidationDependsOn", true)]
   public string PropertyToValidate { get; set; }
   public bool PropertyValidationDependsOn { get; set; }
}