欢迎来到代码驿站!

.NET代码

当前位置:首页 > 软件编程 > .NET代码

ASP.NET Core 模型验证过滤器的两种实现方法

时间:2023-01-06 09:04:32|栏目:.NET代码|点击:

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

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

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

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

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

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

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

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

上一篇:asp.net和ajax实现智能搜索功能代码

栏    目:.NET代码

下一篇:C#基本概念列举详解

本文标题:ASP.NET Core 模型验证过滤器的两种实现方法

本文地址:http://www.codeinn.net/misctech/223105.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有