gpt4 book ai didi

c# - 使用不显眼的 javascript/MVC3 和 DataAnnotations 验证电子邮件地址

转载 作者:可可西里 更新时间:2023-11-01 08:33:41 26 4
gpt4 key购买 nike

jQuery Validation 使验证电子邮件地址变得简单:

$("someForm").validate({
rules: {
SomeField: {
required: true,
email: true,
remote: {
type: "POST",
url: "CheckEmail"
}
}
}
});

这使得 SomeField 是必需的,必须格式化为电子邮件地址,并且还执行对 CheckEmail 操作的远程调用(检查重复项)。

我喜欢让事情尽可能简单,这样我就可以用数据注释做很多相同的事情:

public class RegisterModel {
[Required]
[Remote("CheckEmail", "Home", HttpMethod="POST")]
public string SomeField { get; set; }
}

ASP.net MVC 3/Data Annotations 是否有内置/简单的方法来验证以确保电子邮件地址格式正确?

如果可能的话,我希望它能生成不引人注目的 javascript。

最佳答案

我认为这是您要查找的代码(这类似于 ScottGu 的示例,但还在默认错误消息中显示了 DisplayName 而不是属性名称):

public class EmailAttribute : RegularExpressionAttribute
{
private const string defaultErrorMessage = "'{0}' must be a valid email address";

public EmailAttribute() :
base("^[a-z0-9_\\+-]+(\\.[a-z0-9_\\+-]+)*@[a-z0-9]+(\\.[a-z0-9]+)*\\.([a-z]{2,4})$")
{ }

public override string FormatErrorMessage(string name)
{
return string.Format(defaultErrorMessage, name);
}

protected override ValidationResult IsValid(object value,
ValidationContext validationContext)
{
if (value != null)
{
if (!base.IsValid(value))
{
return new ValidationResult(
FormatErrorMessage(validationContext.DisplayName));
}
}

return ValidationResult.Success;
}
}

那么您的模型属性将如下所示:

    [DisplayName("My Email Address")]
[Email]
public string EmailAddress { get; set; }

关于c# - 使用不显眼的 javascript/MVC3 和 DataAnnotations 验证电子邮件地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6153585/

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