gpt4 book ai didi

c# - 用于电子邮件或电话的 ASP.NET MVC 数据注释验证器

转载 作者:太空狗 更新时间:2023-10-29 18:31:14 24 4
gpt4 key购买 nike

我正在处理 ApplicationUser 的表单注册。在那里,我有一个像 Facebook 这样的字段 Email or phone。我正在使用 DataAnnotation 进行模型验证。在 Data annotation 中,我得到了用于电子邮件验证的 [EmailAddress] 和用于电话号码验证的 [Phone]。但我需要像 [EmailAddressOrPhone] 这样的东西。 那么我该如何实现呢?

public class RegisterViewModel
{
.....

[Required]
[Display(Name = "Email or Phone")]
public string EmailOrPhone { get; set; }

......
}

最佳答案

shouldn't use your own regex to validate email addresses ,但是我个人会使用以下逻辑来确定它是否是有效的电子邮件地址。如果它不是有效的电子邮件地址,您可以假设它是电话号码。

以下代码使用了您已经提到的 [EmailAddress] 属性,但在代码中。这样您就不必自己发明验证电子邮件地址的方法。

public EmailOrPhoneAttribute : ValidationAttribute
{
public override IsValid(object value)
{
var emailOrPhone = value as string;

// Is this a valid email address?
if (this.IsValidEmailAddress(emailOrPhone))
{
// Is valid email address
return true;
}
else if (this.IsValidPhoneNumber(emailOrPhone))
{
// Assume phone number
return true;
}

// Not valid email address or phone
return false;
}

private bool IsValidEmailAddress(string emailToValidate)
{
// Get instance of MVC email validation attribute
var emailAttribute = new EmailAddressAttribute();

return emailAttribute.IsValid(emailOrPhone);
}

private bool IsValidPhoneNumber(string phoneNumberToValidate)
{
// Regualr expression from https://stackoverflow.com/a/8909045/894792 for phone numbers
var regex = new Regex("^\+?(\d[\d-. ]+)?(\([\d-. ]+\))?[\d-. ]+\d$");
return regex.IsMatch(phoneNumberToValidate)
}
}

当然,您需要自己确定如何确定电话号码是否正确,因为不同国家/地区的电话号码不同。我刚刚从 this question 中获取了一个正则表达式举个例子。

关于c# - 用于电子邮件或电话的 ASP.NET MVC 数据注释验证器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39809439/

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