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

Posted

技术标签:

【中文标题】我如何只能使用 ModelState.IsValid 检查一个模型【英文标题】:How can i only check one model with ModelState.IsValid 【发布时间】:2021-08-14 15:44:03 【问题描述】:

我试图只用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,但它仍然检查两个模型而不是一个。

【问题讨论】:

请将您的标签限制为您使用的实际框架和版本。例如,您不能同时使用 ASP.NET MVC 3 和 ASP.NET MVC 4 和 ASP.NET Core。 感谢@HereticMonkey 的警告 【参考方案1】:

我正在使用类似的东西。

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");

【讨论】:

以上是关于我如何只能使用 ModelState.IsValid 检查一个模型的主要内容,如果未能解决你的问题,请参考以下文章

Sinatra / Warden / Ruby - 如何确保我的用户只能使用单个会话登录?

如何解决插件只能在调试中使用

如何使 Angular 指令只能由一个组件使用?

我如何只能使用 python 脚本从 json api 接收选定序列号的数据

如何使用机器人删除不和谐的消息,但只能使用特殊角色 node.js

如何限制一个应用只能在iPhone 5上使用?