IValidatableObject仅在SaveChanges上触发,而不是IsValid

时间:2015-07-24 14:18:28

标签: c# .net entity-framework

我已经实现了IValidatableObject的以下实现:

public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
    if (EndDate.HasValue && EndDate < StartDate)
        yield return new ValidationResult("End date cannot be before start date", new[] { "EndDate" });
}

在我的控制器中,我有:

if (!ModelState.IsValid)
{
    return BadRequest(ModelState);
}
//...
DbContext.SaveChanges();

如果我在Validate&amp; SaveChanges,我首先到达SaveChanges,即ValidV函数没有在IsValid行上运行。

我认为这不是正确的行为。我做错了什么?

1 个答案:

答案 0 :(得分:0)

尝试拨打TryValidateModel().IsValid不会触发验证,而是按预期工作。

验证将触发模型绑定(如果您绑定该对象)以及调用TryValidateModel()ValidateModel()TryUpdateModel()UpdateModel()