我已经实现了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行上运行。
我认为这不是正确的行为。我做错了什么?
答案 0 :(得分:0)
尝试拨打TryValidateModel()
。 .IsValid
不会触发验证,而是按预期工作。
验证将触发模型绑定(如果您绑定该对象)以及调用TryValidateModel()
,ValidateModel()
,TryUpdateModel()
和UpdateModel()