Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 区分大小写与Fluent验证的比较_C#_String Comparison_Fluentvalidation - Fatal编程技术网

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内置验证器。我必须承认我是一个服务器端的家伙,所以我自己对那些验证器不太熟悉。