![](/img/trans.png)
[英]jQuery Validation of email TLD vs. .Net 4.5 EmailAddressAttribute
[英]Validating an email string in .net using EmailAddressAttribute, but not on an attribute
我希望能够做到这一点:
string email = "some@email.com";
bool isValid = IsValidEmail(email);
//returns true
...但是使用 Microsoft 在EmailAddressAttribute 中已经给我们的逻辑。
IsValidEmail 有数百个好的和坏的实现,我不想添加我自己的,当我可以使用某些东西时,Microsoft 已经考虑过了。 理所当然,他们会比我做得更好。
在最近的 ASP.Net 版本中,我们有 System.ComponentModel.DataAnnotations,它为我们提供了出色的EmailAddressAttribute ,让我们可以像这样装饰我们的模型:
public class SomeModel
{
[EmailAddress]
public string Email { get; set; }
}
该类是密封的,所以我不能调用 EmailAddressAttribute.IsValid()
有没有什么好方法可以利用微软已经完成的工作? .Net 框架中是否有某种方法可以让我针对数据注释测试字符串,但我忽略了这一点?
类似的东西......:
var emailChecker = new DataAnnotationsChecker<EmailAddressAttribute>();
string email = "some@email.com";
bool isValid = emailChecker.IsValid(email);
//returns true
如果您无法想象我为什么想要这个,请考虑获取一个列表并检查哪些是有效的电子邮件。
您可以使用EmailAddressAttribute
进行验证。
sealed
意味着您不能创建另一个继承自它的类。 并不意味着你不能使用它。
创建了一些单元测试并且工作正常
[TestMethod]
public void Should_Use_Email_Address_Attribute_To_Validate_Email() {
var emailChecker = new System.ComponentModel.DataAnnotations.EmailAddressAttribute();
string email = "some@email.com";
bool isValid = emailChecker.IsValid(email);
Assert.IsTrue(isValid);
}
[TestMethod]
public void Should_Use_Email_Address_Attribute_To_Invalidate_Email() {
var emailChecker = new System.ComponentModel.DataAnnotations.EmailAddressAttribute();
string email = "some@emai l.com";
bool isValid = emailChecker.IsValid(email);
Assert.IsFalse(isValid);
}
使用邮件地址
这是一种用于读取和验证电子邮件地址的有用技术,即使来自“ Elmer Fudd <e.fudd@example.com> ”样式的输入(例如从电子邮件客户端复制粘贴的输入)。
private string? ExtractEmailAddress(string raw)
{
try
{
var address = new MailAddress(raw);
return address.Address;
}
catch (Exception)
{
return null;
}
}
我还使用[EmailAddress]
属性来指示 API 文档所需的类型。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.