#c# #asp.net-mvc #modelstate #asp.net-core-5.0
Вопрос:
Я пытаюсь проверить только одну модель 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
, но он по-прежнему проверяет обе модели, а не одну.
Комментарии:
1. Пожалуйста, ограничьте свои теги фактической структурой и версией, которую вы используете. Например, вы не можете одновременно использовать ASP.NET MVC 3 и ASP.NET MVC 4 и ASP.NET Ядро.
2. спасибо за предупреждение @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");
}