【发布时间】:2017-10-23 09:03:34
【问题描述】:
型号代码
[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 ["Invalid email address."] 对于相同的值,因此用户无法发布表单。
那么谁能告诉我我的代码有什么问题或任何解决方案?
提前致谢。
【问题讨论】:
-
请注意,jQuery
valid()方法可能使用与EmailAddressAttribute不同的电子邮件地址正则表达式。检查stackoverflow.com/questions/2383669/… 以创建自定义验证属性以接受不包含 TLD 的电子邮件地址输入。 -
@TetsuyaYamamoto 是正确的。您需要更改 jQuery 验证或
EmailAddressAttribute的行为。查看有关该问题的更多信息here。
标签: jquery asp.net-mvc validation data-annotations