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

时间:2014-10-15 08:44:47

标签: c# entity-framework data-annotations

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

[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

如何,都无法以编程方式取消该属性

我怎样才能实现我的目标?

干杯

1 个答案:

答案 0 :(得分:1)

现有RequiredAttribute无法做到这一点。

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

以下是一些指导您正确方向的链接:

http://blogs.msdn.com/b/simonince/archive/2010/06/04/conditional-validation-in-mvc.aspx http://blogs.msdn.com/b/simonince/archive/2011/02/04/conditional-validation-in-asp-net-mvc-3.aspx http://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; }
}