Fluent Validation 不会在第一次验证整个表单

2024-02-06

所以我在表单上使用 Fluent Validation。当我单击提交但未输入任何内容时,我收到出生日期验证错误。如果我输入 DoB,则会获得名字验证。

为什么会发生这种情况?我不明白我连接错了什么。

My form:

 @using (Html.BeginForm())
    {
        @Html.AntiForgeryToken()
        @Html.HiddenFor(customer => customer.CustomerIncomeInfo.CustomerEmploymentInfoModel.EmployerModel.Id)

            <!-- basic customer info -->
        <fieldset>
            <legend>Customer Info</legend>
            @Html.ValidationSummary(false, "Please correct the errors and try again", new { @class = "text-danger" })
            <div class="row">
                <div class="col-md-6">
                    <dl class="dl-horizontal">
                        <dt>@Html.LabelFor(model => model.FirstName)</dt>
                        <dd>@Html.EditorFor(model => model.FirstName, new {@class = "form-control"})</dd>

                    </dl>
                </div>
                <div class="col-md-6">
                    <dl class="dl-horizontal">
                        <dt>@Html.LabelFor(model => model.DateOfBirth)</dt>
                        <dd>@Html.EditorFor(model => model.DateOfBirth, new {@class = "form-control"})</dd>

                    </dl>
                </div>
            </div>
        </fieldset>
}

我的流利验证代码:

public CustomerValidator()
        {
            RuleFor(customer => customer.FirstName)
                .Length(3, 50)
                .NotEmpty()
                .WithMessage("Please enter a valid first name");

            RuleFor(customer => customer.DateOfBirth).NotEmpty().WithMessage("Please enter a valid date of birth");


        }

我的型号:

public class CustomerModel
    {
        public CustomerModel()
        {
        }

        public Guid Id { get; set; }
        [DisplayName("First Name")]
        public string FirstName { get; set; }
        [DisplayName("D.O.B.")]
        public DateTime DateOfBirth { get; set; }
}

使用 Autofac 注册验证器:

builder.RegisterType<CustomerValidator>()
                .Keyed<IValidator>(typeof(IValidator<CustomerModel>))
                .As<IValidator>();

我也在使用Fluent Validation在我的项目中,它的工作方式与您需要的方式相同。我已经尝试过您的代码与我的代码相同,它工作正常,请参考下面的代码:

/// Test CODE 
/// Model Class
[Validator(typeof (CustomerModelValidator))]
public class CustomerModel {
    public CustomerModel() {}
    public Guid Id {
        get;
        set;
    }
    [DisplayName("First Name")]
    public string FirstName {
        get;
        set;
    }
    [DisplayName("D.O.B.")]
    public DateTime DateOfBirth {
        get;
        set;
    }
}
// Validator Class
public class CustomerModelValidator: AbstractValidator < CustomerModel > {
    public CustomerModelValidator() {
        RuleFor(customer = > customer.FirstName)
            .Length(3, 50)
            .NotEmpty()
            .WithMessage("Please enter a valid first name");
        RuleFor(customer = > customer.DateOfBirth).NotEmpty().WithMessage("Please enter a valid date of birth");
    }
}

希望对您有帮助。

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

Fluent Validation 不会在第一次验证整个表单 的相关文章

随机推荐

  • 从 GitHub 进行 Git 克隆后,我看不到我的分支

    我在 GitHub 上有一个存储库 它包含master和一个分支 当我克隆它时 我只获得master并没有看到我的分支 为什么会这样呢 如何查看存储库中的所有分支 默认情况下 git clone只创建一个分支 当前签出的分支 通常是 mas
  • 控制台窗口立即消失[重复]

    这个问题在这里已经有答案了 使用 C 的 Visual Studio 中的控制台窗口不稳定 ReadLine 也不工作 窗口立即消失 我看不到结果 您需要在代码后添加以下行 Console ReadKey 这将阻止控制台执行下一行 直到您按
  • 如何监控 OmniThreadLibrary 中的 Pipeline 阶段?

    是否可以以某种方式监控管道任务 我尝试像这样向每个任务添加监视器 FPipeline Parallel Pipeline Stage StageWorker1 Parallel TaskConfig MonitorWith MyMonito
  • 创建自定义凸路径Android

    我希望为我的框架布局设置一个自定义形状 矩形每个角的不同半径 以便框架布局中的视图将剪辑到形状的边界 ViewOutlineProvider provider new ViewOutlineProvider Override public
  • 通过客户端存根访问 WSDL 时出现 Java InaccessibleWSDLException

    我正在尝试为 Exchange Web 服务编写自定义 Java 客户端 我已经使用生成了客户端存根wsimport工具如所解释here http java dzone com articles jax ws hello world来自 E
  • 在 Linux 上编译一个共享库以面向所有发行版

    我们希望创建一个共享库 so 以针对所有发行版 包括旧发行版 该代码是用 C 编写的 并使用 C 11 功能 因此编译器必须至少为 gcc 4 7 我们注意到 如果我们在安装了 gcc 4 7 2 的 Linux 机器 例如 Ubuntu
  • 使用 php 将视频链接加载到 html 播放器

    我有 HTML 视频此标签用于视频播放
  • 如何在 Java Swing 工具栏中创建“下拉”菜单?

    我在 Swing JToolBar 上创建了一个下拉菜单 但它并没有按照我想要的方式创造行为 我的目标是让它像 Firefox 的 智能书签 按钮一样工作 当用户选择菜单项时它会消失 正确 当用户按 ESC 时它消失 正确 当用户单击菜单之
  • 为什么 swift 中没有 PerformSelector

    显然以下内容在 swift 中不再可用 self performSelector selector onFlip withObject nil afterDelay 0 3 如果仍然存在以下情况 为什么会出现这种情况 NSObject ca
  • 发现多种类型与名为“Account”的控制器匹配。 MVC 4 和使用 RouteConfig.CS

    我目前在同一文件夹中有 2 个项目 主要的 Project1 Project2 Problem 发现多种类型与名为的控制器匹配Account 如果服务此请求的路由可能会发生这种情况 controller action id 不指定命名空间来
  • 错误 rxjs_Observable__.Observable.forkJoin 不是函数?

    我在用Rxjs in an angualr cli应用 在viewer component ts中 Other Imports import Observable from rxjs Observable omitting for brev
  • 如何使用Python连接WiFi网络? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在尝试用 Python 编写一个脚本 该脚本将使我能够搜索无线网络并连接到它们 有没有为此目的的Python 库 None
  • 任何使用 Red Gate 的 SQL 源代码控制的人

    我们一直在寻找 SQL 源代码控制的可能解决方案 我刚刚遇到 Red Gates SQL 源代码控制 想知道是否有人实现了它 我打算下载试用版并尝试一下 但只是想看看其他人是否有真实的体验 一如既往地非常感谢您的投入 S 我更新了下面的原始
  • 在字符串中插入填充空格

    非常基本的问题 但很难形成可接受的形式 我想通过每 3 个空格插入一个填充来转换字符串 例如 123456789 gt 123 456 789 abcdefgh gt abc def gh 我的代码目前是 public String toS
  • 如何只保存差异

    我有一个创建记录的函数 如下所示 func A db gorm DB b C error d e for f range b d append d g f return db Save d Error 我希望能够上传一些数据 可能是相同的
  • 如何将本地图像显示到控制台?

    我刚刚注意到javascript with css使之成为可能在开发者控制台中显示不同的样式 当然 这也使得在控制台中显示图像成为可能 由于我可以很好地在我的项目中使用这个功能 所以我想直接尝试一下 没有成功 使用下面的代码 我从这篇文章中
  • PHPWord addTOC 不显示页码

    我在用着https github com PHPOffice PHPWord https github com PHPOffice PHPWord生成word文档 函数 addTOC 生成带有标题的页面索引 但由于某种原因 页码不显示 ad
  • Three.js:将 3d 位置转换为 2d 屏幕位置

    我有一个位置为 x y z 的 3D 对象 如何计算该对象的屏幕位置 x y 我已经搜索过它 一个解决方案是我必须找出投影矩阵 然后将 3D 位置点乘以该矩阵 将其投影到某个 2D 观看表面 计算机屏幕 上 但我不知道如何在 Three j
  • 如何在 Google 日历中使用别名?

    Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的答案或互动 我有一个谷歌帐户 比如说 电子邮件受保护 cdn cgi l email protection
  • Fluent Validation 不会在第一次验证整个表单

    所以我在表单上使用 Fluent Validation 当我单击提交但未输入任何内容时 我收到出生日期验证错误 如果我输入 DoB 则会获得名字验证 为什么会发生这种情况 我不明白我连接错了什么 My form using Html Beg