Asp.net mvc 4 更改后保留MVC远程验证错误

Asp.net mvc 4 更改后保留MVC远程验证错误,asp.net-mvc-4,remote-validation,Asp.net Mvc 4,Remote Validation,在收到无效电子邮件后,我第二次远程验证检查时遇到问题。我不明白为什么它在错误不再无效后不删除它 这是我的模型: [Required(ErrorMessage = "An email is required")] [StringLength(150, MinimumLength = 4)] [Display(Name = "Email")] [RegularExpression("^([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]

在收到无效电子邮件后,我第二次远程验证检查时遇到问题。我不明白为什么它在错误不再无效后不删除它

这是我的模型:

[Required(ErrorMessage = "An email is required")]
[StringLength(150, MinimumLength = 4)]
[Display(Name = "Email")]
[RegularExpression("^([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$", ErrorMessage = "Invalid Email")]
[Remote("doesEmailExist", "Account", HttpMethod = "POST", ErrorMessage = "This email has already registered. Please use a different email")]
public virtual string strEmail { get; set; }
我的看法是:

<ul>
        <li class="editor-label">@Html.LabelFor(m => m.strEmail)</li>
        <li class="editor-field">@Html.TextBoxFor(m => m.strEmail)</li>
        <li class="error">@Html.ValidationMessageFor(m => m.strEmail)</li>
</ul>
为什么远程验证没有将自身从无效条目更正为有效条目?

如果没有现有电子邮件,您的JsonReturn需要返回true not null。请注意,这真的应该是一个问题

[HttpGet]
public JsonResult doesEmailExist(string strEmail)
{
  var user = db.t_user.FirstOrDefault(i => i.email == strEmail);
  if (user == null)
    return Json(true, JsonRequestBehavior.AllowGet); // change this
  else
     return Json(false, JsonRequestBehavior.AllowGet);

}


请注意,您也可以使用[EmailAddress]来代替[RegularExpression]属性

现在可以正常工作。谢谢
[HttpGet]
public JsonResult doesEmailExist(string strEmail)
{
  var user = db.t_user.FirstOrDefault(i => i.email == strEmail);
  if (user == null)
    return Json(true, JsonRequestBehavior.AllowGet); // change this
  else
     return Json(false, JsonRequestBehavior.AllowGet);

}
 bool exists = db.t_user.Any(i => i.email == strEmail)
 return Json(!exists, JsonRequestBehavior.AllowGet);