Сеть не имеет состояния, и каждый раз, когда делается запрос, создается новый экземпляр вашего контроллера, и, следовательно, создается новый экземпляр переменной erreurUtilisateurExist
(ее значение не сохраняется).
В вашем случае правильный подход - добавить ошибку ModelState
и вернуть представление так, чтобы оно отображалось пользователю. Измените код контроллера на
[HttpPost]
public ActionResult Create(Utilisateur utilisateur)
{
if (!ModelStateIsValid)
{
return View(utilisateur);
}
bool NotinDB = Utilisateur.creer(utilisateur);
if (NotInDB)
{
FormsAuthentication.SetAuthCookie(utilisateur.Email, false);
return RedirectToAction("Index", "Home");
}
else
{
ModelState.AddModelError("", "There is a user already using this address");
return View(utilisateur);
}
}
и сообщение об ошибке будет отображаться в элементе, сгенерированном вашим @Html.ValidationSummary()
в представлении.
Если вы хотите отобразить ошибку, связанную с конкретным свойством, используйте (скажем)
ModelState.AddModelError("Email", "There is a user already using this address");
, который будет отображаться в заполнителе, определенном
@Html.ValidationMessageFor(m => m.Email)
Вы также можете использовать атрибут [Remote]
для проверки на стороне клиента - см. Как: реализовать удаленную проверку в ASP.NET MVC