![](/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.