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

 更新时间:2022年05月12日 09:47:41   作者:愚公搬代码  
 在.Net Core的时代中,框架会帮你自动验证,本文主要介绍了 ASP.NET Core 模型验证过滤器的两种实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

 在.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 Core 模型验证过滤器的两种实现方法的文章就介绍到这了,更多相关 ASP.NET Core 模型验证过滤器内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • ASP.NET中控件的EnableViewState属性及彻底禁用

    ASP.NET中控件的EnableViewState属性及彻底禁用

    如果我们在开发Web应用程序时,某些控件是不需要接受用户的操作或只需要接受一次操作的时候,我们可以将这些控件的EnableViewState属性改为false,这样可以优化我们的程序,提高网络访问的速度。
    2016-06-06
  • php基础练习--简单验证码实现

    php基础练习--简单验证码实现

    这篇文章主要介绍了php基础练习--简单验证码实现,需要的朋友可以参考下
    2014-02-02
  • .net core静态中间件的使用

    .net core静态中间件的使用

    本文主要整理了静态中间件的使用,学习.net core的朋友可以参考下本文
    2021-06-06
  • .NET Core中RabbitMQ使用死信队列的实现

    .NET Core中RabbitMQ使用死信队列的实现

    本文主要介绍了.NET Core中RabbitMQ使用死信队列的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • ASP.NET 路径问题的解决方法

    ASP.NET 路径问题的解决方法

    相对路径和绝对路径在ASP.NET中可以用~/来解决.
    2009-06-06
  • asp.net网站开发包wq.dll打包下载

    asp.net网站开发包wq.dll打包下载

    这个wq.dll主要是用来给Web群和C#联盟群及GUI群的朋友使用的,其它群和使用控件开发web的朋友可以直接无视,这个封装好的包是一个基础开发包,可以轻松的帮你完成一些小型网站的开发,支持.Net Framework2.0(及以上平台)。
    2009-10-10
  • asp.net Gridview行绑定事件新体会

    asp.net Gridview行绑定事件新体会

    最近在做统计GridView中某一列的加总值,之前有在RowDataBound事件中中逐笔加总,经过测试才知道,这是不正确的,并不能得到所有资料的加总值。
    2009-11-11
  • asp.net中实体类对象赋值到表单的实现代码

    asp.net中实体类对象赋值到表单的实现代码

    昨天在网上看到了一个利用反射表单赋值到实体类对象的一个方法,自己就在加了个方法,从实体对象到表单,觉的很不错非常省事,所以把他写成了一个类,供以后使用
    2010-11-11
  • asp.net request.PathInfo实现的url重写

    asp.net request.PathInfo实现的url重写

    最近对在开始研究url重写,对重写的原理以及重写之后引起的性能问题是研究的重点,研究过程中发现了一种轻便的“url重写方案”
    2009-04-04
  • Asp.Net中索引器的用法分析

    Asp.Net中索引器的用法分析

    这篇文章主要介绍了Asp.Net中索引器的用法,以实例形式详细分析了Asp.Net中索引器的定义、属性与具体使用方法,并附带说明了相关的注意事项,在asp.net项目开发中有不错的参考借鉴价值,需要的朋友可以参考下
    2014-11-11

最新评论