Я пытаюсь проверить модель запроса в запросе POST для API.Но ModelState.IsValid
всегда показывает допустимое независимо от того, верна ли модель, которую я отправил в теле запроса, или нет.Недопустимое тело запроса, как в случае изменения имени поля или типа поля определенного атрибута.
Вот код:
Класс ValidateModelStateAttribute:
public class ValidateModelStateAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext context)
{
if (!context.ModelState.IsValid)
{
context.Result = new BadRequestObjectResult(context.ModelState);
}
}
}
Класс контроллера:
[HttpPost("Search")]
[Produces("application/json")]
public async Task<IActionResult> SearchBook([FromBody]Book searchRequest)
{
if (searchRequest!= null && !ModelState.IsValid)
{
return BadRequest();
}
return new ObjectResult("Book!");
}
Книга Модель класса:
[DataContract]
[Serializable]
public class Book
{
[Required]
[DataMember]
public string BookId;
[Required]
[DataMember]
public string BookName;
}
В классе Startup.cs:
services.AddMvc(options =>
{
options.Filters.Add(typeof(ValidateModelStateAttribute));
})
При отладке в ValidateModelStateAttribute
class, isValid
поле всегда истинно, а key
всегда пусто.
Кто-нибудь знает почему?