У меня есть действие контроллера MVC, которое получает сложный тип с некоторыми списками сотрудников.В моем пользовательском модуле связывания я разделяю сотрудников на принятых и отклоненных и возвращаю ExcelEmployeeModel
public class ExcelEmployeeModel
{
[Required] public String Description { get; set; }
public List<Employee> Accepted { get; set; }
public List<Employee> RejectedEmployees { get; set; }
}
public class Employee
{
public Int32 Id { get; set; }
[Required] public string FirstName { get; set; }
[Required] public string LastName { get; set; }
}
. Кажется, AspNetCore вызывает validate для каждого из сотрудников в списке и отправляет объект BadRequest обратно клиенту.если есть отклоненные сотрудники.Поэтому, если есть отклоненные сотрудники, действие никогда не выполняется.
Как предотвратить проверку свойства, такого как RejectedEmployees?
Было бы неплохо просто украсить мое свойство с помощью пользовательского атрибута следующим образом:
[NoValidation]
public List<Employee> RejectedEmployees {get;set;}
Этот атрибут ValidationAttribute является причиной для проверки элементов работника, и оттуда возвращается неверный запрос.
// Conifguration file StartUp.cs
services.AddMvc(options =>
{
options.Filters.Add(new ValidateModelAttribute());
}
// Custom validation attribute class
public class ValidateModelAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext context)
{
if (!context.ModelState.IsValid)
{
context.Result = new BadRequestObjectResult(context.ModelState);
}
}
}
Это действие, которое должно получать данные, но не получает их.
[HttpPost]
public async Task<IActionResult> Post([FromBody] ExcelEmployeeModel model)
{
...
}