我正在尝试验证 API 的 POST 请求中的请求模型。但是ModelState.IsValid无论我在请求正文中发送的模型是否正确,始终显示有效。请求正文无效,因为我更改了字段名称或修改了特定属性的字段类型。
这是代码:
验证模型状态属性类:
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课堂上调试时,isValid字段始终为真,并且key始终为空。
任何人都知道为什么?
慕侠2389804
相关分类