Ошибка удаленной проверки MVC сохраняется после изменения
У меня проблемы с удаленной проверкой во второй раз после получения недействительного электронного письма. Я не могу понять, почему он не удаляет ошибку после того, как она больше не является недействительной.
Вот моя модель:
[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>
Мой контроллер:
[HttpPost]
public JsonResult doesEmailExist(string strEmail)
{
var user = db.t_user.FirstOrDefault(i => i.email == strEmail);
if (user == null)
return Json(null);
else
return Json(false);
}
Почему удаленная проверка не исправляет себя, переходя от неверной записи к действительной записи?
1 ответ
Решение
Ваш JsonReturn
нужно вернуть true
(не null
) если существующего электронного адреса не существует. Обратите внимание, это действительно должно быть GET
[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);
Обратите внимание, что вы также можете использовать [EmailAddress]
вместо вашего [RegularExpression]
атрибут