【发布时间】:2011-11-15 09:18:16
【问题描述】:
我在我的项目中使用Fluent Validation。
在我的 ViewModel 中,我有一个字符串类型的属性,有效值只是表示正整数的字符串。
因此,我创建了一个简单的IntegerValidator 来检查字符串是否可以解析为整数。这行得通。
问题是,如何添加它必须是正整数的规则?我想使用现有的Greater Than Validator,但将其链接到我的字符串属性的规则会将其比较为string,而不是作为解析的int。如何做到这一点?
我想做的示例(注意ToInt()):
RuleFor(x => x.BatchNumber).SetValidator(new IntegerValidator())
.ToInt().GreaterThan(0);
【问题讨论】:
-
这真的很有道理!但是,我想知道 ToInt 的作用应该是什么。正如我所看到的,它应该将
RuleBuilder<X, string>转换为RuleBuilder<X, int>,并确保在验证时将验证值转换为int。但是......方法链应该返回一个RuleBuilder<X, string>。对?因此,必须有一种方法可以指示连续的int规则(如GreaterThan)进行int验证,但返回string规则构建器。我担心这超出了 FluentValidation 的当前功能。 -
@GertArnold:嗯,我认为
ToInt没有多大意义。我实际上并不关心 如何 它将如何工作,只是 那个 我可以使用GreaterThan并将一个 int 传递给GreaterThan。 -
好吧,我的主要观点是,在当前 Fluent Validation 的思维模式中,这可能是概念问题。
-
也许创建一个包含可选最小和最大参数的 IntegerValidator 替换?我使用类似的东西(尽管不是 Fluent Validation),并使用可为空的整数作为边界,以便可以独立设置上限和下限或完全禁用。
标签: c# .net fluentvalidation