C# 区分大小写与Fluent验证的比较
我在使用实现不区分大小写比较时失败。我只是试着比较两个电子邮件字段,忽略大小写 现行规则包括:C# 区分大小写与Fluent验证的比较,c#,string-comparison,fluentvalidation,C#,String Comparison,Fluentvalidation,我在使用实现不区分大小写比较时失败。我只是试着比较两个电子邮件字段,忽略大小写 现行规则包括: RuleFor(x => x.EmailAddress).NotEmpty().Length(5, 200).EmailAddress(); RuleFor(x => x.ConfirmEmailAddress).NotEmpty().Equal(x => x.EmailAddress).WithMessage("Emails must match"); 为了增加不区分大小写的要求
RuleFor(x => x.EmailAddress).NotEmpty().Length(5, 200).EmailAddress();
RuleFor(x => x.ConfirmEmailAddress).NotEmpty().Equal(x => x.EmailAddress).WithMessage("Emails must match");
为了增加不区分大小写的要求,我考虑了使用equal调用传递比较器,但这似乎不起作用
RuleFor(x => x.ConfirmEmailAddress).NotEmpty().Equal(x => x.EmailAddress, StringComparer.CurrentCultureIgnoreCase).WithMessage("Emails must match");
理想情况下,如果可能的话,我希望在客户端进行不区分大小写的比较。是否有人能够就如何实现这一目标提供指导
我当前使用的NuGet软件包包括:
<package id="FluentValidation" version="5.1.0.0" targetFramework="net45" />
<package id="FluentValidation.MVC4" version="5.1.0.0" targetFramework="net45" />
您可以使用.Must()扩展方法,重载接受父对象和正在验证的属性,如下所示:
RuleFor(x => x.ConfirmEmailAddress)
.NotEmpty()
.Must((x, confirmEmailAddress) => x.EmailAddress.Equals(confirmEmailAddress, StringComparison.OrdinalIgnoreCase))
.WithMessage("Emails must match");
但是,这仅在服务器端受支持,具体如下:
请注意,FluentValidation还可以与ASP.NET MVC一起使用
客户端验证,但并非所有规则都受支持。例如
使用条件(带有When/除非)定义的任何规则,自定义
验证程序或对的调用不得在客户端运行。这个
客户端上支持以下验证器:
- NotNull/NotEmpty
- 匹配项(正则表达式)
- 包括二者(范围)
- 信用卡
- 电子邮件
- EqualTo(跨财产平等比较)
- 长度
这看起来通过了服务器端的初始测试。看起来客户端验证在这里丢失了。准确吗?我是否需要编写额外的自定义.js和.css来增强这一点?@Jerode:恐怕是这样,您可以看看客户端的EqualTo内置验证器。我必须承认我是一个服务器端的家伙,所以我自己对那些验证器不太熟悉。