问题标签 [fluentvalidation-2.0]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1532 浏览

asp.net - 流畅的验证:“日期时间”不包含“值”的定义

尝试使用 Fluent Validation 来确保始终填写日期范围并且结束日期不会出现在开始日期之前。

我已经正确完成了第一部分,并且可以正确触发,但是第二部分似乎无法实现。

我的代码:

一切都被绊倒的地方是.GreaterThan,它报告了一个错误:

我的 DateTime 不可为空,两个 DateTime 都需要内容。当我允许 Intellisense 显示可能的选项时,字段名称之后的任何内容都仅限于 and 之类的内容.Date.Hour这也不起作用。.Value不存在于该选项列表中,也不存在.HasValue.

对这一点真的很困惑。


另外,另一个问题:如何对单个页面上存在的多个表单进行单独验证?现在我只有一个表格,但是表格的模型是直接带进来的。我似乎无法弄清楚如何抽象出表单的模型,以便我可以在页面上拥有多个模型。没有数据被引入。

现在我刚刚尝试将模型更改为:

使用页面引用@model CCS.Models.ReportViewModel而不是,@model CCS.Models.Report1ToExcelViewModel但我似乎无法让页面拉入 Report1ToExcelViewModel 以便识别表单字段。现在他们出错了,因为'ReportViewModel' does not contain a definition for [fieldname]即使我像上面那样Report1ToExcelViewModel直接带入。ReportViewModel

0 投票
1 回答
314 浏览

c# - mvc 4 应用程序中的条件 FluentValidation

我的模型如下

我的控制器如下

我希望使用 Fluent Validation 设置以下验证

  1. 如果Id == 'foo',那么Name应该有它的Length验证
  2. 如果Id !== 'foo',那么Name应该有Length验证

但是长度验证似乎总是被应用。即不管Id的值是多少,我错过了什么?

0 投票
0 回答
404 浏览

c# - Fluent Validation - 自定义本地化

使用 FluentValidation 我想实现自己的本地化,因为我使用 3rd 方服务/源翻译我的消息。

如何用我自己的实现替换 LocalizedStringSource?可能吗?

这是一个想法(格里芬本地化和流畅验证),但仍然没有告诉我如何使用它。

最好的问候,塞萨尔。

0 投票
1 回答
371 浏览

asp.net - 嵌套 Where(x => x.Condition = value, () => {}); 流利的验证

当前的项目:

  • ASP.NET 4.5.1
  • MVC 5

我需要知道我是否可以嵌套When()这样的语句:

因为我最不想做的就是像这样装饰 30 多个表单字段:

那是站不住脚的。

这些条件本身都不需要验证,因为它们实际上都不是用户可编辑的字段(只是用户可选择的值);我只需要将它们与已知值进行比较。如果这实际上更合适,我会使用 if/else 语句,但事实并非如此。

该模型基本上是扁平的,只有第二层When()代表导入的模型,第三层是处理导入模型中特定字段的不同方式。

0 投票
1 回答
287 浏览

asp.net - FluentValidation - 验证“泄漏”到其他复制模型中

当前的项目:

  • ASP.NET 4.5.2
  • MVC 5
  • 流利的验证

我在这里可能有一个非常奇怪的问题。我可能正在经历“验证泄漏”,即对一个子模型(应该完全填写)的验证“泄漏”到第二次和第三次导入的同一模型中,但不一定是填写。

所以我有这个注册表单,它在注册后出现。如果不填写表格,用户将无法进入该网站。本质上,一个对站点内部正常运行至关重要的个人资料页面。

一类用户,称为招聘人员,需要三个“地址”:对于公司,对于他们作为联系人(如果他们的办公室不同),以及对于计费(如果计费地点不同)。只有公司地址是必需的,因为它需要手动输入地址。如果第二个和第三个与第一个相同,用户可以通过Bootstrap Switch控制的布尔值来专门标记它们,第二个和第三个子模型可以提交为空。如果两个布尔值(“此地址与主地址相同”)中的任何一个设置为 True(这很重要!),则仅需要在第一个子模型上进行验证

我最初的解决方案(后来我放弃了)是让 Address 子模型准确反映 DB 模型,因为它不仅有物理地址,还有电话号码、电子邮件等。我放弃了因为我在使用整个地址模型时遇到了验证问题,因为即使我的验证器只应该在地址不同时触发(我使用引导开关来允许这些地址字段作为组隐藏,因此如果第二个和第三个地址确实不同,用户可以取消隐藏地址字段)。

从那以后,我重新设计了 Address 子模型,使其包含物理地址:街道、城市、州等。不幸的是,我仍然遇到问题,因为第二个和第三个子表单为空会引发验证它们,即使用户将它们留在默认配置中(此地址与主地址相同 - 不验证)。

我的地址型号:

如您所见,我提供了决策部分:如果用户来自加拿大或美国,他们将获得省/州的自定义下拉菜单,而其他人则获得简单的国家和省文本字段。

我的招聘人员模型:

那里有很多东西,对不起数据转储。可能只有前半部分很重要。

我的地址验证:

现在我的招聘人员验证:

我看到验证的方式,.SetValidator()联系人和账单地址模型应该只在布尔标志设置为 false 时触发,但无论布尔标志如何,它们似乎每次都会触发。如中所示,服务器正在返回表单(服务器端触发),其中联系人和帐单地址被标记为需要填写。这不是我想要的!

Address 模型没有被任何 Validation 属性修饰,所以我唯一能想到的是.SetValidator()MailingAddress 的验证“泄漏”到 Contact 和 Billing 模型中。

我已经通过在招聘人员的验证 (the .SetValidator()) 中明确禁用联系人和计费的验证调用来确认这一点 - 当我这样做时,可以使用空子模型成功提交表单。问题是,如果其中任何一个的布尔值设置为 False,我需要能够验证它们以确保地址正确且完整。

我该如何克服呢?


疯狂的想法:

我刚刚意识到这个问题可能会从两端打击我:

  • 因为导入的模型使用相同的字段名称,所以mailingAddressAddressModel 的验证器正在捕获其他模型中的其他字段名称。
  • 因为不同的表单使用相同的验证器,所以它已经通过 加载mailingAddress,因此它已经加载并准备好验证一次contactAddressbillingAddress得到处理。因此,即使他们自己的验证器没有被显式加载,他们也会陷入验证中。

或者,也许我会同时受到两端的打击。我想在这里获得专家意见。


更新:

再想一想,我认为这里的问题不是“疯狂的想法”,因为当我明确删除.SetValidator()完全从主要招聘人员验证中分配的子模型验证器时,验证问题就消失了。可以成功提交和处理空的联系人和帐单地址子模型。如果我上面的两个想法中的任何一个在起作用,这都不会发生。

问题是 - 如果这些不是空的,我确实需要对它们进行验证!那么为什么没有正确使用布尔值来确定是否为这些子表单分配验证呢?为什么包含子模型验证器,即使它应该仅由false布尔值触发,导致子模型得到验证?

0 投票
2 回答
2266 浏览

fluentvalidation - 枚举值上的 FluentValidation NotNull

我有一个基于“int”的具有枚举属性的模型。我需要验证此属性不为空。但NotEmpty禁止0值。而且NotNull只是不起作用,因为枚举属性不能为空。我不能让我的财产可以为空。我该如何进行此类验证?

0 投票
1 回答
1438 浏览

c# - 在 ActionFilterAttribute 中排除“值 'null' 对 ... 无效”

在 webapi 项目中,我们有一个类似的模型:

我们已经配置了参数验证,并使用 ActionFilterAttribute 进行了一些检查:

问题是,执行如下调用:https://localhost/person?Id=null&name= 'John',会产生如下错误:

我们首先使 Id 字段可以为空,因为我们希望允许像上面那样的调用。尽管如此,验证者还是会抱怨。有什么干净的方法可以排除这个错误吗?

我可以遍历错误列表并排除这个错误,但感觉真的错了。

0 投票
1 回答
758 浏览

c# - 使用 FluentValidation 测试 Must 规则

我有这个规则来验证一个属性是否具有有效值,具体取决于另一个属性中的允许值列表。

这很好,但我想创建一个单元测试,但总是失败。我认为是因为 RuleFor 不是针对特定属性,而是对象本身。

如何改进验证器或测试?

0 投票
0 回答
257 浏览

asp.net - 日期时间上的 FluentValidation

我在 PublishedDateTime 字段上有以下数据注释验证代码行,但我想通过 FluentValidation API 进行验证

我如何将其转换为 FluentValidation?

0 投票
1 回答
212 浏览

fluentvalidation - FindAsync never comes back however Find works just fine

I am using FluentValidation to validate the objects. I am simply checking checking whether the user exists in database or not. In my case, DbContext.Entity.Find works just fine but DbContext.Entity.FindAsync never returns.

Please refer to the below source code where it is happening.

Thanks