Jer*_*ode 4 c# string-comparison fluentvalidation
我未能成功使用Fluent Validations实现不区分大小写的比较。我只是想比较两个电子邮件字段并忽略大小写。
目前的规则是:
RuleFor(x => x.EmailAddress).NotEmpty().Length(5, 200).EmailAddress();
RuleFor(x => x.ConfirmEmailAddress).NotEmpty().Equal(x => x.EmailAddress).WithMessage("Emails must match");
Run Code Online (Sandbox Code Playgroud)
为了添加不区分大小写的要求,我考虑通过 equal 调用传递比较器,但这似乎不起作用。
RuleFor(x => x.ConfirmEmailAddress).NotEmpty().Equal(x => x.EmailAddress, StringComparer.CurrentCultureIgnoreCase).WithMessage("Emails must match");
Run Code Online (Sandbox Code Playgroud)
理想情况下,如果可能的话,我希望在客户端进行不区分大小写的比较。有人能够提供如何实现这一目标的指导吗?
我当前使用的 NuGet 包是:
<package id="FluentValidation" version="5.1.0.0" targetFramework="net45" />
<package id="FluentValidation.MVC4" version="5.1.0.0" targetFramework="net45" />
Run Code Online (Sandbox Code Playgroud)
您可以使用 .Must() 扩展方法,并使用接受父对象和正在验证的属性的重载,如下所示:
RuleFor(x => x.ConfirmEmailAddress)
.NotEmpty()
.Must((x, confirmEmailAddress) => x.EmailAddress.Equals(confirmEmailAddress, StringComparison.OrdinalIgnoreCase))
.WithMessage("Emails must match");
Run Code Online (Sandbox Code Playgroud)
然而,根据文档,这仅在服务器端受支持:
请注意,FluentValidation 还可以与 ASP.NET MVC 的客户端验证一起使用,但并非所有规则都受支持。例如,使用条件(使用 When/Unless)、自定义验证器或 Must 调用定义的任何规则都不会在客户端运行。客户端支持以下验证器:
- 非空/非空
- 匹配(正则表达式)
- InclusiveBetween(范围)
- 信用卡
- 电子邮件
- EqualTo(跨属性相等比较)
- 长度
| 归档时间: |
|
| 查看次数: |
4366 次 |
| 最近记录: |