问题标签 [fluentvalidation]

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 回答
69936 浏览

c# - 使用 Fluent Validation 进行条件验证

我需要的是一种根据是否填写其他字段来有条件地验证字段的方法。

前任。我有一个下拉列表和一个相关的日期字段。如果未设置任何字段,则表单应通过验证。但是,如果两个字段之一已设置但另一个未设置,则应触发验证,要求设置另一个字段。

我已经编写了自定义验证类,但似乎它是在单个字段上验证的。有没有办法使用内置验证器设置我需要的验证?如果没有,是否有使用自定义验证器连接两个字段的好方法?

0 投票
1 回答
966 浏览

c# - 相互依赖的链接规则

我在我的项目中使用Fluent Validation 。
在我的 ViewModel 中,我有一个字符串类型的属性,有效值只是表示正整数的字符串。
因此,我创建了一个简单IntegerValidator的方法来检查字符串是否可以解析为整数。这行得通。
问题是,如何添加它必须是正整数的规则?我想使用现有的大于验证器,但将其链接到我的字符串属性的规则会将其比较为 a string,而不是作为已解析的int. 如何做到这一点?

我想做的示例(注意ToInt()):

0 投票
2 回答
3618 浏览

c# - 使用 Fluent Validation 与枚举进行大于或等于比较?

好的,假设我正在尝试根据枚举的值有条件地验证对象,我该怎么做?

这是验证对象的示例调用。

这是具有枚举值的类的示例。

此特定示例引发消息:“验证器 'FirstValidator' 无法验证 'MyEnum' 类型的成员 - 类型不兼容。”

经过一些编辑,我想出了一个包装器来做我希望的事情,但我更喜欢一个更优雅的解决方案。我将 MyObjectValidator 替换为

并添加了一个验证器包装器

有没有办法在不必提供 propertyvalidator 包装器的情况下引用内部上下文,以便我可以根据枚举值有条件地验证许多规则?

0 投票
5 回答
7157 浏览

asp.net-mvc - ASP.net MVC 中的流利验证 - 数据库验证

我在我的 ASP.net MVC 3 项目中使用 Fluent Validation 框架。到目前为止,我的所有验证都非常简单(确保字符串不为空,只有一定长度等),但现在我需要验证数据库中是否存在某些内容。

  1. 在这种情况下应该使用 Fluent Validation 吗?
  2. 如果应该使用 Fluent Validation 完成数据库验证,那么我该如何处理依赖关系?验证器类是自动创建的,我需要以某种方式将它传递给我的存储库实例之一才能查询我的数据库。

我试图验证的一个例子可能是:

我的页面上有一个下拉列表,其中包含所选项目的列表。我想在尝试保存新记录之前验证他们选择的项目是否确实存在于数据库中。

编辑
这是 Fluent Validation 框架中常规验证的代码示例:

控制器:

如您所见,我从未自己创建验证器。这是因为以下行Global.asax

问题是现在我有一个需要使用存储库与我的数据库交互的验证器,但是由于我没有创建验证器,所以除了硬编码具体类型之外,我不知道如何传入该依赖项。

0 投票
1 回答
1322 浏览

asp.net-mvc-3 - 如何使用 FluentValidation 高效验证几个依赖外部数据的业务规则?

我的FormPartB对象有几个业务规则,它们依赖于相关实体LicenseeFormPartA. 我是 FluentValidation 的新手。

我想做的(我认为)是:

  • 在 myFormPartBValidator中,获取LicenseeandFormPartA实体一次,然后设置一堆规则(即Must()谓词)以FormPartB使用来自这些相关对象的值。

  • 即我不想在每个规则定义中再次获取两个外部实体。

我有几个想法:

(1) 在验证器的构造函数中获取那些实体,在我的RuleFor定义之上,然后将这些实体保存为私有字段,

或者

(2) 在对 Validate() 的调用中获取这些实体,然后将这些实体保存为私有字段:

然而

  • 在选项 (1) 中,我似乎无法访问 FormPartB 实例

  • 在选项 (2) 中,Validate() 似乎没有像我想象的那样工作(即似乎没有在每次验证时都被调用FormPartB。)

  • 而且我什至不确定“获取对象并保存为私有字段”是正确的方法。

有什么建议吗?

0 投票
1 回答
402 浏览

asp.net-mvc-3 - Fluentvalidator 多步表单验证每一步

我有一个 MVC 应用程序,它具有由多个操作组成的多步表单(不,我不能使用 javascript)。我有一个带有 fluentvalidation 设置的表单模型。但是,它会验证每个步骤的所有验证。我希望它只验证属于当前步骤的属性。有没有办法告诉流利的验证器只验证某些属性?

0 投票
2 回答
2275 浏览

c# - FluentValidation Rulefor( ...阅读 COMBO)

使用 C# FluentValidation Rulefor() for MVC3 检查组合是否具有值的正确方法是什么?

我有一组 3 个组合框的出生日期

每个组合都显示“DAY”或“Month”或“Year”
,并且它们都有各自的相关列表。

所以我想检查用户是否选择了 0..31 中的值之一。

例如,DateOfBirthDay HTML 输出组合如下所示:

当我运行 ModelState.IsValid 时,它不会发现用户没有触摸任何组合值的事实,将索引保留为“0”。

先谢谢了。

0 投票
1 回答
538 浏览

c# - 服务层放置在哪里

我正在使用FluentValidation框架。目前我有几个验证器(每个实体)。我将实体保存在单独的程序集 ( ProjectName.Domain) 和验证器中。

我读过一个服务层,它在存储库和控制器之间呈现中介层(http://www.asp.net/mvc/tutorials/older-versions/models-(data)/validating-with-a-service-layer -cs)。可以举行service layer同一个大会吗?

据我了解,服务层的目的是保存具体的(或可能是通用的)存储库和相应的验证器,并对存储库项进行验证。所以实现可能会有所不同。我对吗?

如何以正确的方式使用 FluentValidation(或独立于框架)制作服务层。或者将基础实体与一些FluentValidation AbstractValidator class.

谢谢!

0 投票
2 回答
1600 浏览

c# - 将 FluentValidation 验证器与基实体类集成

我想AbstractValidator<T>在基实体类中使用。

但是我的一个测试失败了,说该Validate()方法不能接受null作为参数。

我正在使用Visual Web Developer,目前无法安装C# Developer Express以创建控制台应用程序来调试错误。既然我不知道如何在单元测试中调试。或者,如果可以给出一些解释,那就太好了!

谢谢!

0 投票
4 回答
1151 浏览

c# - 应用程序设计:NH 会话管理、通用存储库、ASP.NET MVC

定义了一个domain model我想弄清楚如何做剩下的工作。


数据访问层

我之前读过,没有必要编写自己的UnitOfWork实现代码ISession(尽管我发现了很多关于如何做得很好的信息)。所以我很困惑..我有这样的存储库界面:

在具体实现中有两种选择:

选项 A

ISessionFactory通过构造函数注入并具有类似于:

选项 B

是使用NHibernateHelper

NHibernateHelper在哪里

首选什么选项?

为什么(除了注射)?

如果我使用选项A我在哪里放置配置ISessionFactory

它应该放在ASP.NET MVC项目中的某个地方吗?如何?

感谢您阅读怪物问题!感谢您的指导!