在 ASP.Net Core 2 MVC 中禁用模型验证的正确方法

2024-04-13

使用扩展方法设置 MVC

services.AddMvc()

然后在控制器中(这也可能适用于 GET),使用主体中提供的参数创建 POST 操作的方法,例如

[HttpPost("save")]
public Entity Save([FromBody]Entity someEntity)

当调用该操作时,MVC 管道将调用 ParameterBinder,而 ParameterBinder 又调用DefaultObjectValidator。我不想要验证(一方面它很慢,但更重要的是在复杂的循环图上循环),但似乎在管道中关闭验证的唯一方法是这样的:

public class NonValidatingValidator : IObjectModelValidator
{
    public void Validate(ActionContext actionContext, ValidationStateDictionary validationState, string prefix, object model)
    {
    }
}

并在启动/配置服务中:

        var validator = services.FirstOrDefault(s => s.ServiceType == typeof(IObjectModelValidator));
        if (validator != null)
        {
            services.Remove(validator);
            services.Add(new ServiceDescriptor(typeof(IObjectModelValidator), _ => new NonValidatingValidator(), ServiceLifetime.Singleton));
        }

这看起来像一把大锤。我环顾四周,找不到替代方案,也尝试删除DataAnnotationModelValidator没有成功,所以想知道是否有更好/正确的方法来关闭验证?


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

应禁用自动模型状态验证。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 ASP.Net Core 2 MVC 中禁用模型验证的正确方法 的相关文章

随机推荐

  • 解码 PDF 文档中文本的 FlateDecoded 部分

    Using peepdf https code google com p peepdf 我正在分析两个简单的 pdf 文件 这两个文件都包含单行文本 ZYXWVUTSRQQRSTUVWXYZ 并且都是在 Mac OS X 上创建的 第一个文
  • R中不等长度列表的平均值

    我有不等长度的向量列表 我想要的是平均值 在每个索引处 例如 a c 2 3 4 b c 2 3 4 5 c c 5 0 3 4 6 avg a b c c 9 3 6 3 11 3 9 2 6 1 如何在 R 中实现这一点 我们可以将向量
  • 如何在 Java Swing 中自动滚动到底部

    我有一个简单的 JPanel 上面有一个 JScrollPane 根据需要带有垂直滚动条 东西被添加到 JPanel 或从中删除 当它超出面板底部时 我希望 JScrollPane 根据需要自动向下滚动到底部 或者如果某些组件离开面板则向上
  • javascript focus() 在 Firefox 和 IE 上不起作用?

    我正在尝试显示一个表单并聚焦它 由于某种原因它只适用于 Chrome 我怎样才能让它跨浏览器工作 div div
  • 客户端验证不会针对 CompareAttribute DataAnnotation 触发

    我正在布置一个比较两个密码字符串的视图 我的模型之一的两个属性非常简单 Required RegularExpression S ErrorMessage White space is not allowed StringLength 20
  • 方法和内部类同名(错误:...与先前的声明冲突)

    我打算有一个类 它有一个内部类和一个名称相似的方法 的代码为example1 cpp即使我有一个内部类和一个同名的方法 编译也没有问题B While example2 cpp如果我重命名将不起作用Position to position用小
  • Kotlin - 在 Android 中转换 Singleton DatabaseController 的最佳方式

    我正在通过 Kotlin in Action 学习 Kotlin 并且正在慢慢地将 Android 应用程序代码转换为它 但我在转换下面的类时发现了一些问题 public class DatabaseController private s
  • VueJS:使用对象文字与返回对象的函数定义“数据”

    定义之间有什么区别data对象可以通过以下方式 1 使用对象字面量 data title Helly VueJS 2 函数返回对象 data return title Helly VueJS 来自文档 https v2 vuejs org
  • 如何使用 pyinstaller 创建最小大小的可执行文件?

    我使用的是 Windows 10 安装了 anaconda 但我想使用 python 3 5 在一个新的 干净的最小环境中独立创建一个可执行文件 所以我做了一些测试 测试1 我在文件夹 testenv 中创建了一个 python 脚本 te
  • 在mysql中选择两个独立的表[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 results mysqli gt query SELECT product name price FROM herbs an WHERE
  • 双倍的 Pow 实现

    我正在开发一个用于运动控制的代码 但我遇到了 pow 函数的问题 我使用VS2010作为IDE 这是我的问题 我有 double p 100 0000 double d 1000 0000 t1 pow p 8 0000 d 1 00 4
  • YouTube.Builder 的正确使用方法

    我需要获取用户 YouTube 视频 这是我的代码 仅尝试获取用户 YouTube 频道 但它不起作用 选择帐户后 加载Youtube频道总是抛出错误 我读了这个answer https stackoverflow com a 214077
  • 如何使用类库中的控制器?

    我在类库中有控制器 但我无法弄清楚如何让主项目识别它们 主项目引用了我的类库 我需要在某处注册它们吗 我想同时使用控制器和 ApiController EDIT 路线配置 创建项目后未更改 public class RouteConfig
  • 在 swift 中将 UIImage 转换为 base64 字符串

    我正在尝试将 UIImage 转换为 base64 字符串 目的是将其上传到后端服务器 然而 我在这篇文章中找到的转换代码 应该是Apple自己的实现 生成了一个无效的字符串 UIImage 和 Base64 字符串之间的转换 https
  • Javafx程序可以通过GUI和命令行控制吗?

    我正在使用 Javafx GUI 但我也需要来自命令行的相同级别的功能 我想知道创建一个同时具有命令行和 Javafx 功能的主类的最佳方法是什么 这样您就可以在 GUI 上做一件事 然后在命令行上做下一件事 命令行还会更新 GUI 显示
  • CSV 日期格式

    我有一个 VB 应用程序 它提取数据并创建 3 个 CSV 文件 a csv b csv c csv 然后我使用另一个 Excel 电子表格 import xls 将上述 CSV 文件中的所有数据导入到此工作表中 import xls 文件
  • 使用 python 进行多元线性回归

    我想用 python 计算多元线性回归 我找到了这个简单线性回归的代码 import numpy as np from matplotlib pyplot import x np array 1 2 3 4 5 y np array 2 3
  • 无法启动服务器。服务器实例未配置

    在尝试为我的项目设置 tomcat 服务器时 出现以下错误 请参阅下面的完整堆栈跟踪 java lang ClassNotFoundException com springsource tcserver serviceability dep
  • libstdc++.so.6 与 cuda 相关的链接器问题

    今天我在链接我编译的 cuda 内容时遇到了问题 我有一个最新的 debian 测试 w 2 6 32 3 amd64 我整天都在写我的代码 不时编译 没有问题 但在进行了较小的代码更改后 我收到以下错误 gcc o pa CUDA o h
  • 在 ASP.Net Core 2 MVC 中禁用模型验证的正确方法

    使用扩展方法设置 MVC services AddMvc 然后在控制器中 这也可能适用于 GET 使用主体中提供的参数创建 POST 操作的方法 例如 HttpPost save public Entity Save FromBody En