【发布时间】:2017-04-15 12:39:47
【问题描述】:
我有以下远程验证规则:
[AcceptVerbs("Get", "Post")]
public IActionResult ValidateWindowEndDate(DateTime? endDate, DateTime? startDate)
{
int minWeeks = 8;
if (startDate.HasValue && endDate.HasValue
&& (endDate < startDate.Value.AddDays(minWeeks * 7)))
{
return Json(data: $"Inspection window end date must be at least {minWeeks} weeks after start date.");
}
return Json(data: true);
}
这与我班级中的一个属性相关联,如下所示:
[Required]
[Remote("ValidateWindowEndDate", "InspectionWindow", AdditionalFields = "StartDate")]
public DateTime EndDate { get; set; }
当我在视图中输入无效数据时,验证会按预期进行。但是,如果我在代码中获得了对象的实例,则将日期更改为无效日期并将其保存回数据库,例如
luInspectionWindow.EndDate = luInspectionWindow.StartDate.AddDays(1);
_context.Update(luInspectionWindow);
await _context.SaveChangesAsync();
然后保存不会发生异常,并且永远不会调用验证方法,这不是我所期望的行为。我以为 EF 会拒绝记录无效?这是预期的行为吗?
【问题讨论】:
标签: c# asp.net-core-mvc entity-framework-core