【问题标题】:Email format validation issue电子邮件格式验证问题
【发布时间】: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


【解决方案1】:

尝试 Html.EditorFor 辅助方法而不是 Html.TextBoxFor。希望能帮到你,我的朋友:))

【讨论】:

  • 但是如果数据注释允许这个 'abc@gmail' 输入,那么 ModelState.IsValid 的问题是什么?
  • @AkshayChawla:HtmlTextboxFor 总是创建一个文本框(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-12-22
  • 2019-06-16
  • 1970-01-01
  • 2015-11-03
  • 2014-07-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多