我如何只能使用 ModelState.IsValid 检查一个模型

问题描述

我试图只用 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
    {
        //.....
    }
 }

我已经搜索并尝试将其应用到我的代码中,例如:GetFieldValidationStateValidationStateMicrosoft.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");
}