2017-05-23 98 views
0

型號代碼電子郵件格式驗證問題

[Required(ErrorMessage = "Required.")] 
[EmailAddress(ErrorMessage = "Invalid email address.")] 
[Remote("checkEmailAvailability", "Users", "Users", AdditionalFields = "RoleId,UserID", ErrorMessage = "Email address already in use")] 
public string stEmail { get; set; } 

查看代碼

@Html.TextBoxFor(model => model.stEmail, null, new { @class = "form-control" }) 

<script src="@Url.Content("~/assets/global/plugins/jquery.min.js")" type="text/javascript"></script> 
<script src="@Url.Content("~/assets/global/plugins/jquery-validation/js/jquery.validate.min.js")" type="text/javascript"></script> 
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script> 
<script src="@Url.Content("~/Areas/Users/Scripts/AddPatients.js")" type="text/javascript"></script> 

JS代碼[AddPatients.js]

$("#btnAddPatient").click(function (event) { 
    event.preventDefault(); 
    var $form = $('#frmAddPatient'); 
    if ($form.valid()) {//some code 
    } 
    } 
}); 

控制器代碼

[HttpPost] 
public JsonResult updatePatient(AddEditPatientViewModel foPatientViewModel) 
{ 
if (ModelState.IsValid) 
    { 
    //some code 
    } 
} 

我面臨什麼問題是,當用戶輸入「ABC @ gmail的」電子郵件地址文本框它正從「$ form.valid()」通不過「ModelState.IsValid」是返回false [」無效的電子郵件地址。「]對於相同的值,因此用戶無法發佈表單。

所以任何人都可以告訴我什麼是錯誤的代碼或任何解決方案嗎?
在此先感謝。

+1

請注意,與EmailAddressAttribute相比,jQuery'valid()'方法可能對電子郵件地址使用不同的正則表達式。請查看https://stackoverflow.com/questions/2383669/how-to-create-custom-validation-attribute-for-mvc/5954452#5954452創建自定義驗證屬性,以接受未包含頂級域名的電子郵件地址輸入。 –

+0

@TetsuyaYamamoto是正確的。您需要更改jQuery的驗證或EmailAddressAttribute的行爲。查看有關該問題的更多信息[這裏](https://stackoverflow.com/questions/37610086/emailattribute-is-not-validating-correctly-in-a-viewmodel-from-asp-net-core/38386015#38386015) 。 –

回答

1

嘗試Html.EditorFor幫手方法而不是Html.TextBoxFor。希望能幫到忙,我的朋友:))

+0

但是,如果數據註釋允許此'abc @ gmail'輸入,那麼ModelState.IsValid有什麼問題? –

+0

@AkshayChawla:HtmlTextboxFor總是創建一個文本框( Tomato32