第一次失败时停止 Fluent Validation

2023-12-29

我正在为我的请求对象定义验证。 我希望验证器在第一次失败时停止,而不仅仅是同一条链上的失败。 在下面的例子中,如果我的TechnicalHeader对象为空,当验证达到规则时,我收到 NullReference 异常TechnicalHeader.MCUserid.

简而言之,我想根据第一条规则的结果对下面代码中的最后三个规则进行条件验证

using System;
using ServiceStack.FluentValidation;
using MyProj.Services.Models;

namespace MyProj.Services.BaseService.Validators
{
    public class BaseValidator<T> : AbstractValidator<T>
        where T : RequestBase
    {
        public BaseValidator()
        {
            RuleSet(ServiceStack.ApplyTo.Put | ServiceStack.ApplyTo.Post, 
                () =>
                {
                    this.CascadeMode = CascadeMode.StopOnFirstFailure;
                    RuleFor(x => x.TechnicalHeader).Cascade(CascadeMode.StopOnFirstFailure).NotNull().WithMessage("Header cannot be null");
                    RuleFor(x => x.TechnicalHeader).NotEmpty().WithMessage("Header cannot be null");
                    RuleFor(x => x.TechnicalHeader.Userid).NotEmpty().WithMessage("Userid cannot be null or an empty string");
                    RuleFor(x => x.TechnicalHeader.CabCode).GreaterThan(0).WithMessage("CabCode cannot be or less than 0");
                    RuleFor(x => x.TechnicalHeader.Ndg).NotEmpty().WithMessage("Ndg cannot be null or an empty string");
                }
            );
        }
    }
}

只需检查null在运行依赖于它们的规则之前,使用When健康)状况。

this.CascadeMode = CascadeMode.StopOnFirstFailure;
RuleFor(x => x.TechnicalHeader).NotNull().WithMessage("Header cannot be null");

// Ensure TechnicalHeader is provided
When(x => x.TechnicalHeader != null, () => {
    RuleFor(x => x.TechnicalHeader.Userid).NotEmpty().WithMessage("Userid cannot be null or an empty string");
    RuleFor(x => x.TechnicalHeader.CabCode).GreaterThan(0).WithMessage("CabCode cannot be or less than 0");
    RuleFor(x => x.TechnicalHeader.Ndg).NotEmpty().WithMessage("Ndg cannot be null or an empty string");
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

第一次失败时停止 Fluent Validation 的相关文章

  • Microsoft MVC:手动触发表单验证

    有谁知道是否有办法手动触发 Net MVC 应用程序中的客户端表单验证 我想做以下事情 我已经查看了 MicrosoftMvcValidation js 中的代码 但没有找到可以在表单上调用的方法 我认为您正在寻找的验证可以在这里找到 ht
  • 在单个 WPF 控件中列出所有 Validation.Error?

    我试图找到一种简单的方法来绑定单个控件 例如 TextBlock 或 ListBox 以列出 WPF 表单上的所有验证错误 我能找到的大多数源代码示例只是将一个控件绑定到 Validation Errors 0 ErrorContent 它
  • JavaScript 使用正则表达式验证电话号码

    问候溢出者 我正在尝试编写一个正则表达式来验证 10 位数字 形式的电话号码 即 以下情况是有效的 1231231234 或 1111111111 无效的情况是少于 10 位或多于 10 位的数字字符串 到目前为止我的表达是这样的 d 10
  • 重置输入控件的边框颜色 (HTML/Javascript)

    有谁知道使用 javascript 修改输入控件后如何重置它的边框颜色 通过突出显示其中包含不正确或无效数据的字段等来进行验证非常有用 例如 改变边框 document getElementById myinput style border
  • 如何使用 Cerberus 返回自定义规则名称/错误代码?

    正在验证 csv文件 我想以用户习惯的格式给出验证结果 为了利用Cerberus https docs python cerberus org en stable index html 我让用户在一个中定义验证规则 yaml file 架构
  • LINQ2SQL:如何实现通用最大字符串长度验证?

    LINQ2SQL 中的一个常见问题是 虽然 NET 字符串允许为其变量分配任意长度 但您的数据库可能具有特定的最大长度约束 如 VARCHAR 5 这将导致 SQL 错误消息 字符串或二进制数据将被截断 这是非常没有帮助的 因为它不会告诉您
  • Java,根据 WSDL 中的嵌入模式验证 XML

    我有一个 wsdl具有嵌入架构的文件 我想使用它来验证 XML 文件 字符串 wsdl文件 与验证的方式相同 xsd 该架构位于
  • 将 step="1" 放入“datetime-local”输入类型时,jQuery 验证失败

    我在用着https jqueryvalidation org https jqueryvalidation org 表单验证插件 当我把step 1 in a datetime local输入字段显示秒数 如果我使用插件验证该字段 例如 只
  • 使用注释和 IValidatableObject 进行递归验证

    我正在尝试使用注释和一些自定义代码来验证嵌套对象 不是 MVC 中的模型 我发现以下帖子很有用 手动使用数据注释验证和对象图 https stackoverflow com questions 6938877 using data anno
  • Groovy:验证 JSON 字符串

    我需要检查 Groovy 中的字符串是否为有效的 JSON 我的第一个想法就是把它发送出去new JsonSlurper parseText myString 并且 如果没有例外 就假设它是正确的 然而 我发现 Groovy 很乐意接受尾随
  • 在 ServiceStack 中测试插件

    我正在查看 ServiceStack 中单元测试的源代码测试主机库 cs https github com ServiceStack ServiceStack Examples blob master tests ServiceStack
  • 如何使用 SQL 查询在 Access 中的字段上设置验证规则?

    我正在使用 MS Access 2016 Office 365 目前遇到问题 下面是一个演示此问题的示例 这里我创建了一个表 名为节点家庭链接 由两个字段组成 NodeID 和 FamilyID 如下所示 现在 NodeID 是从另一个表
  • 多语言标记验证器

    是否有免费的在线多语言标记验证服务可以正确识别和验证多语言标记 我确实找到了totalvalidator和htmlvalidator 但这些是 付费 非基于网络的解决方案 Use http validator w3 org nu http
  • 禁用 notInArray 验证器 Zend Framework 2

    有没有办法在 Zend Framework 2 中禁用 notInArray Validator 互联网上的所有信息都显示如何在 Zend Framework 1 中禁用 notInArray Validator 例如以这种方式 如果您根本
  • 角度 2 通道数组到自定义验证器(模板驱动形式)

    我需要将一个对象数组传递给 a2 自定义验证器 然后我想根据该数组中的记录验证模板驱动表单字段的值 但是我无法检索验证器内的对象 我唯一能看到的是它的名称作为字符串 如有任何帮助 我们将不胜感激
  • 确定 C 字符串是否是 C 中的有效 int

    我需要检查 C 字符串是否是有效整数 我都尝试过 int num atoi str and int res sscanf str d num 但发送字符串 8 9 10 这两行都仅返回 8 而没有指示该字符串的无效性 谁能提出替代方案 看看
  • Rails 中多个模型的最佳实践 - 嵌套/非嵌套和验证

    笔记 根据布莱恩的评论 来自如何以 Rails 形式处理多个模型 https stackoverflow com questions 892624 how to handle multiple models in a rails form
  • 设置asp.net验证器的顺序

    我使用 3 个验证器来验证文本框 但当在文本框中输入无效值时 所有验证器都会被触发 但我希望这些验证器按照特定的顺序工作 以便用户可以一一解决这些错误
  • jquery验证-等待远程检查完成

    当我打电话时 form valid 我连接了远程验证检查 一切正常 但是如果所有其他字段都有效 则表单会通过验证 因为远程检查没有 足够快 返回响应 有没有办法强制 jquery 验证等待任何远程检查完成或挂钩远程检查调用的完成事件 我目前
  • Mac 应用程序商店 - 尝试让加密发挥作用。 。 。我缺少什么?

    我正在尝试使用 Alan Quartermain 的解决方案 如该问题所链接 Mac App Store 收据验证码 https stackoverflow com questions 4261348 mac app store recei

随机推荐

  • 多线程 Java 应用程序的性能

    我想了解多线程环境中的性能 为此 我编写了一个小测试 在我的机器 四核 Intel Windows XP Sun JDK 1 6 0 20 上运行 结果令人惊讶 该测试基本上是一个线程安全计数器 使用以下任一方法进行同步synchroniz
  • 是否可以安排在特定日期和时间发布?

    我正在使用 Azure DevOps 发布管道来自动化部署 我想安排发布创建在特定的日期和时间进行 但根据下面的屏幕截图 只能选择一周中的几天 并且您不能将触发器指定为仅一次 这是一个问题 因为触发器将导致每周在指定的日期进行发布 并且我们
  • @synchronized vs. NSLock 实例 vs. pthread_mutex_t

    我正在观看一个关于多线程的 2 年前的 教程视频 其中指出 NSLock实例比使用快 3 倍 同步 pthread mutex t比 2 倍快NSLock实例 实际上比 同步 这是真的 我还没有找到任何权威的说法 但我只是想在 StackO
  • 将石墨指标偏移当前时间范围内的最低值

    我有带有 Graphite 指标的 Grafana 我有一个图表显示EnqueueCountActiveMQ 中的某些特定队列 问题是EnqueueCount显示自创建队列以来的所有值 因此当我将 Grafana 中的时间范围缩小到 今天到
  • 向 ggplot 图形添加文件名或其他注释

    我使用 ggplot 来制作大部分图形 这些可以是单面板 也可以是多面的 为了更容易跟踪修订 我想在绘图的角落生成一个包含一些文本的小标签 在伪代码中 我正在寻找这样的东西 generate the initial plot p lt gg
  • WPF/MVVM 在运行时加载用户控件

    我知道有很多关于我的问题的文章 但我找不到解决方案 我是 WPF MVVM 的新手 我尝试了解 MVVM 逻辑 所以我做了一个小项目来理解这一点 对于我以后的应用程序 我想将用户控件动态加载到我的窗口中 在我的 StartView 中 我有
  • UI 的可排序列表的动画过渡

    我正在与一个jQueryUI可排序列表 并且想要在以下情况下为过渡设置动画li当我向上或向下拖动元素时 s 会四处移动 作为Apple已经在他们的iPod app重新排列播放列表的歌曲时 这可能吗 我已经搜索了几个小时 但找不到任何有用的东
  • 立即启用保存文档 NSManagedObjectContext 吗?

    从 10 7 上带有 CoreData 模板的标准 Xcode 基于文档的应用程序开始 我遇到了一些令人沮丧的行为 我确信这是我忽略的简单事情 假设在我的 NSPersistentDocument 子类中 我有这样的东西 连接到窗口中的一个
  • Vim:选择文件后保持位置列表窗口打开

    我需要完全相反的行为这个问题 https stackoverflow com questions 10846598 close location list when selecting file 我的观察是 按下enter在位置列表窗口中的
  • 如何将一列拆分为按日期排序的多列

    当我尝试以正确的格式获取数据库数据时遇到很多问题 我正在寻找按天按列打印数据库输出的方法 我的数据库有两列 一列带有timestamp格式如下YYYY MM DD H M另一列包含与速度相关的数据 我需要按天将速度数据拆分为列 或多或少 我
  • 具有多维(或非标量)输出的 Scipy 过滤器

    有没有类似的过滤器ndimage s 通用过滤器 http docs scipy org doc scipy reference generated scipy ndimage filters generic filter html支持矢量
  • 我需要对标题属性(工具提示)进行 html 编码吗?

    在我的标记中我使用HTML title attributes我设置的Tooltip各种 ASP NET 控件的属性 例如asp Label 这些标题的内容来自数据库 我使用数据绑定语法 例如
  • Spring 4 Web 套接字 - 我必须有一个 stomp 代理吗?

    我一直在使用以下链接来使用新的 spring 4 websockets http spring io guides gs messaging stomp websocket http spring io guides gs messagin
  • 我的水晶报表在传递参数时没有刷新?

    我已经使用 Crystal Reports 本身中的 SQL 查询创建了 Crystal Reports 通过传递两个参数 即 例如 月和年 当我预览报告时 我可以通过传递不同的参数来浏览所有页面并且其工作正常 但是在通过浏览器查看报告时
  • ng-view 未显示解析

    我以这种方式使用解析 似乎是这样做的标准方法 但视图没有显示 我错过了什么想法吗 此致 angular module fifaApp ngRoute config function routeProvider routeProvider w
  • 如何显示图像的完整尺寸?

    我是新来的 也是 Android 编程新手 我在互联网上的一个网站上找到了这个示例 下面是示例 这是一个很棒的教程 我想要实现的是 当我单击 GridView 上的图片时 我想显示图像的完整大小 public class MainActiv
  • 如何使用 R RDCOMClient 检索 Outlook 收件箱电子邮件?

    library RDCOMClient create outlook object OutApp lt COMCreate Outlook Application 我想从名为 AUX 的 Outlook 文件夹中检索今天的电子邮件 解析电子
  • 在 XML 中使用包名称

    我正在使用 Android Studio 来构建我的应用程序 我想用gradle构建类型 我使用 applicationIdSuffix 在包名称中添加后缀 以修改测试构建类型的包名称 buildTypes debug runProguar
  • 服务工作人员错误:事件已响应

    我不断收到此错误 未捕获 承诺中 DOMException 无法在 FetchEvent 上执行 respondWith 该事件已被响应 我知道如果 fetch 函数中发生异步操作 服务工作人员会自动响应 但我无法完全弄清楚这段代码中的哪一
  • 第一次失败时停止 Fluent Validation

    我正在为我的请求对象定义验证 我希望验证器在第一次失败时停止 而不仅仅是同一条链上的失败 在下面的例子中 如果我的TechnicalHeader对象为空 当验证达到规则时 我收到 NullReference 异常TechnicalHeade