(精华)2020年7月21日 ASP.NET Core 模型验证过滤器
发布日期:2021-06-29 15:08:09 浏览次数:4 分类:技术文章

本文共 858 字,大约阅读时间需要 2 分钟。

在.Net Core的时代中,框架会帮你自动验证model的state,也就是ModelState。框架会为你自动注册ModelStateInvalidFilter,这个会运行在OnActionExecuting事件里面。

基于现有框架的代码编写的话,所以我们不再需要在业务中耦合这样的模型判断代码,系统内部会检查ModelState是否为Valid,如果为InValid会直接返回400 BadRequest,这样就没有必要执行后面的代码,提高效率。因此,操作方法中不再需要以下代码:

if (!ModelState.IsValid){
return BadRequest(ModelState);}

第一种方法:.Net Core 禁用模型验证过滤器

services.Configure
(options => options.SuppressModelStateInvalidFilter = true);

SuppressModelStateInvalidFilter =true时,会关闭默认模型验证过滤器。[ApiController] 默认自带有400模型验证,且优先级比较高,如果需要自定义模型验证,则需要先关闭默认的模型验证。

第二种方法:自动替换默认模型验证

//参数验证services.Configure
(options =>{
options.InvalidModelStateResponseFactory = (context) => {
var error = context.ModelState.GetValidationSummary(); return new JsonResult(Result.FromError($"参数验证不通过:{error.ToString()}", ResultCode.InvalidParams)); };});

转载地址:https://codeboy.blog.csdn.net/article/details/107491376 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:(精华)2020年7月21日 ASP.NET Core 全局过滤器的使用
下一篇:(精华)2020年7月20日 ASP.NET Core CSRedisCore的使用

发表评论

最新留言

哈哈,博客排版真的漂亮呢~
[***.90.31.176]2024年04月04日 20时32分45秒