2011-08-19 100 views
1

我試圖遵循谷歌搜索驗證郵件地址找到指引,並使用下列內容:驗證電子郵件不起作用

[Required(ErrorMessage = "Email required.")] 
    [ValidateEmail(ErrorMessage = "Valid email required.")] 
    public string Email { get; set; } 

這是屬性類:

public class ValidateEmailAttribute : RegularExpressionAttribute 
{ 
    public ValidateEmailAttribute() : 
     base(@"^(([A-Za-z0-9]+_+)|([A-Za-z0-9]+\-+)|([A-Za-z0-9]+\.+)|([A-Za-z0-9]+\++))*[A-Za-z0-9][email protected]((\w+\-+)|(\w+\.))*\w{1,63}\.[a-zA-Z]{2,6}$") {} 
} 

也發現谷歌搜索的例子。

但是,我嘗試了這個版本的電子郵件屬性和另一個,但既不阻止我輸入任何電子郵件字段。我嘗試着輸入一個簡單的名字,用空格和全部,並且它通過很好!

爲什麼不踢它並阻止它? Required屬性起作用,只是正則表達式沒有。

+0

您是否獨立於站點測試過正則表達式字符串?格式可能會炸燬。同時檢查JavaScript錯誤。 –

+0

在您的操作方法中發佈代碼,並且還要求所需的屬性有效嗎? – jcvandan

回答

0

您是否正在檢查您的模型在您的控制器中是否有效?

[HttpPost] 
public ActionResult Register(User user) 
{ 
    if (Model.IsValid()) 
    { 
     // process model 
     return View("Success"); 
    } 

    return View(user); 
} 

,並您引用MicrosoftAjax和MicrosoftMvcValidation腳本,並在您的視圖的頂部驗證你的模型?

<script src="/Scripts/MicrosoftAjax.js" type="text/javascript"></script> 
<script src="/Scripts/MicrosoftMvcValidation.js" type="text/javascript"></script> 

<% Html.EnableClientValidation(); %> 

有關更詳細的說明,請參閱http://weblogs.asp.net/scottgu/archive/2010/01/15/asp-net-mvc-2-model-validation.aspx

+0

不,這不是問題,自己找到了,看到我的答案。不管怎麼說,還是要謝謝你。 – Anders

2

請注意,這種電子郵件驗證涵蓋的IETF標準只是小部分,不應在生產代碼中使用。首先,它沒有考慮本地部分的長度(這裏可以是任何數字),也不允許引用單詞,它甚至不允許非ASCII字符。

我建議你看一看EmailVerify.NET,微軟.NET組件,可以根據目前所有的IETF標準驗證的電子郵件地址的語法(甚至可以聯繫相關的郵件交換器檢查如果他們的郵箱存在或沒有)。正如您所期望的那樣,該組件也可以輕鬆地與DataAnnotation框架集成。

免責聲明:我對這個產品的主要開發人員。