问题描述
我试图只用 ModelState.IsValid
检查一个模型一次,之后我想用 ModelState.IsValid
检查另一个模型,我想在一个操作中完成所有操作。
下面让我向您展示我真正想做的事情:
[AllowAnonymous]
[HttpPost]
public async Task<IActionResult> Fillinginformation(Company company,Agency agency,List<IFormFile> files,Address address)
{
if (ModelState.IsValid("Company"))//if its possible
{
//.....
}
else if (ModelState.IsValid("Agency"))//if its possible
{
//.....
}
else if (ModelState.IsValid("Address"))//if its possible
{
//.....
}
else
{
//.....
}
}
我已经搜索并尝试将其应用到我的代码中,例如:GetFieldValidationState
、ValidationState
和 Microsoft.AspNetCore.Mvc.ModelBinding.ModelValidationState
,但我无法很好地应用它们。
我尝试编写一个检查 ModelState.IsValid
的扩展方法,但它仍然检查两个模型而不是一个。
解决方法
我正在使用这样的东西。
try {
var context = new ValidationContext(Company,serviceProvider: null,items: null);
var results = new List<ValidationResult>();
if (!Validator.TryValidateObject(Company,context,results,true))
throw new Exception("Check Company info...");
//validate all models
}
catch (Exception e) {
ModelState.AddModelError("",e.Message);
return View("your_view");
}