型號代碼電子郵件格式驗證問題
[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 [」無效的電子郵件地址。「]對於相同的值,因此用戶無法發佈表單。
所以任何人都可以告訴我什麼是錯誤的代碼或任何解決方案嗎?
在此先感謝。
請注意,與EmailAddressAttribute相比,jQuery'valid()'方法可能對電子郵件地址使用不同的正則表達式。請查看https://stackoverflow.com/questions/2383669/how-to-create-custom-validation-attribute-for-mvc/5954452#5954452創建自定義驗證屬性,以接受未包含頂級域名的電子郵件地址輸入。 –
@TetsuyaYamamoto是正確的。您需要更改jQuery的驗證或EmailAddressAttribute的行爲。查看有關該問題的更多信息[這裏](https://stackoverflow.com/questions/37610086/emailattribute-is-not-validating-correctly-in-a-viewmodel-from-asp-net-core/38386015#38386015) 。 –