gpt4 book ai didi

c# - 流畅验证的电子邮件检查与服务器端不是同一个客户端

转载 作者:行者123 更新时间:2023-11-30 12:42:24 24 4
gpt4 key购买 nike

我正在使用 FluentValidation 在客户端和服务器端验证我的模型。我使用的是最新版本:

FluentValidation.MVC5

在撰写本文时,即

5.5.0.0

我有以下简化的验证器:

public class MyViewModelValidator : AbstractValidator<MyViewModel>
{
public MyViewModelValidator()
{
RuleFor(x => x.Email)
.EmailAddress().WithLocalizedMessage(() => MyResources.Validation_Email_NotValidAddress)
.NotEmpty()
.WithLocalizedMessage(() => MyResources.Validation_Email);
}
}

客户端它似乎做了一些基本的验证,比如它不会接受任何在“@”符号两边没有文本的东西,但是它会接受类似 test@test. 的东西。 p>

当我发布此数据时出现问题,我的 Controller 中有以下内容:

    if (!ModelState.IsValid)
throw new Exception("Model validation error");

由于 test@test 电子邮件地址,这会将模型视为无效并抛出错误。所以看起来我的前端验证比我的服务器端验证更宽松。

引用文档后,它确实声明客户端支持 Email() 方法,但是该服务器端与呈现在前端的内容之间似乎存在一些差异结束。

https://fluentvalidation.codeplex.com/wikipage?title=mvc

如何通过电子邮件确保客户端验证与服务器端一样彻底。

最佳答案

正如 Evgeny 在上面提到的,我最终选择使用 Matches 规则,因为这是客户端支持的验证器之一。

   RuleFor(x => x.Email)
.Matches(@"^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$").WithLocalizedMessage(() => MyResources.Validation_Email_NotValidAddress)
.NotEmpty() // <-- and cant be empty
.WithLocalizedMessage(() => MyResources.Validation_Email);

我相信上面的正则表达式被 ASP.NET 用于 RegularExpressionValidator。并且可以很好地满足我的要求。

关于c# - 流畅验证的电子邮件检查与服务器端不是同一个客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33936301/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com