Как передать пользовательское уведомление о неудачном входе в систему для просмотра в MVC4
Я хочу передать сообщение об ошибке входа в систему, которое я сам кодировал, но не знаю как. Я хочу поместить это в @Html.ValidationMessageFor(model => model.UserName)
а также @Html.ValidationMessageFor(model => model.Password)
или отдельный ярлык (правильно ли я буду использовать @Html.ValidationMessage()
вместо @Html.ValidationMessageFor()
?)
вот моя модель:
public class User
{
public int UserId { get; set; }
[Required]
[Display(Name = "User Name")]
public string UserName { get; set; }
[Required]
[DataType(DataType.Password)]
public string Password { get; set; }
}
вот мой контроллер:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Login(User p)
{
if (ModelState.IsValid)
{
User item = db.Authenticate(p);
if (item != null) // if item is not null, the login succeeded
{
return RedirectToAction("Main", "Home");
}
}
string error = "Incorrect user name or password."; // I don't know how to pass this
return View(); //login failed
}
вот мой взгляд:
@using (Html.BeginForm()) {
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
<fieldset>
<legend>User</legend>
<div class="editor-label">
@Html.LabelFor(model => model.UserName)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.UserName)
@Html.ValidationMessageFor(model => model.UserName)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Password)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Password)
@Html.ValidationMessageFor(model => model.Password)
</div>
<p>
<input type="submit" value="Login" />
</p>
</fieldset>
}
2 ответа
Вы можете добавить пользовательское сообщение об ошибке в словарь состояния модели, используя AddModelError
метод. validationSummary
/ValidationMessageFor
вспомогательные методы читают ошибки проверки из словаря состояний модели при его вызове.
Первый параметр - это ключ для сообщения об ошибке. Если вы пройдете string.empty
в качестве значения передаваемое вами сообщение об ошибке будет отображаться ValidationSummary
вспомогательный метод
ModelState.AddModelError(string.Empty,"Incorrect user name or password.");
return View(p);
Если вы хотите визуализировать сообщение об ошибке с помощью элемента ввода (ValidationMessageFor
рендеринга), вы можете передать имя свойства в качестве значения ключа при вызове AdddModelError
метод.
ModelState.AddModelError(nameof(User.Password),"Incorrect password");
return View();
Мы можем использовать метод AddModelError для обработки пользовательских сообщений об ошибках
ModelState.AddModelError(nameof(User.UserName),"Incorrect UserName");
ModelState.AddModelError(nameof(User.Password),"Incorrect password");
return View();