[HttpPost]
public ActionResult Create(ALLOCATION_M allocationM)
{
try
{
if (ModelState.IsValid)
{
allocationM.ALLO_ID = GetId();
_unitOfWork.AllocationMRepository.Insert(allocationM);
_unitOfWork.Save();
return RedirectToAction("Index");
}
}
catch (DataException)
{
ModelState.AddModelError("", EditorLocalization.AllocationMasterController_Create_Unable_to_save_changes__Try_again__and_if_the_problem_persists__see_your_system_administrator_);
}
return View(allocationM);
}
内部C#运行时检查ModelState.IsValid
如何?我的意思是当从视图中调用post方法时,它如何检查我的模型状态是有效还是无效。
答案 0 :(得分:5)
当默认模型绑定器尝试实例化作为参数传递给控制器操作的模型(在执行此操作之前),如果存在某些验证错误,它将把它们添加到ModelState中。因此,一旦执行流程进入您的控制器操作,就会出现添加验证错误。 IsValid属性只检查Errors集合中是否有元素。
例如,假设您的ALLOCATION_M
有一个用[Required]
属性修饰的属性:
[Required]
public string SomeProperty { get; set; }
当您提交表单以便在请求中没有名为SomeProperty
的参数时调用此控制器操作,或者如果它为空,则默认模型绑定器将添加与此属性关联的验证错误。