我如何只能使用 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
//.....
我已经搜索并尝试将其应用于我的代码,例如:GetFieldValidationState
、ValidationState
和 Microsoft.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 - 如何确保我的用户只能使用单个会话登录?
我如何只能使用 python 脚本从 json api 接收选定序列号的数据