Дополнительно
Отображение сообщения об ошибке в представлении из контроллера asp.net mvc 5
Я новичок в веб-разработке и пытаюсь изучить ASP.Net MVC 5. Я ищу одну запись в базе данных, если запись не найдена, то я хочу вывести пользователю сообщение об ошибке. Ниже приведена моя попытка:
Контроллер
[HttpGet]
public ActionResult Search()
{
return View();
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Search(ForgotPasswordMV viewModel)
{
if (Temp.Check(viewModel.Email))
return RedirectToAction("VerifyToken", new { query = viewModel.Email });
else
{
ViewBag.ErrorMessage = "Email not found or matched";
return View();
}
}
Вид:
<p>@ViewBag.ErrorMessage</p>
ViewModel
public class ForgotPasswordMV
{
[Display(Name = "Enter your email"), Required]
public string Email { get; set; }
}
Но я где-то читал, что я должен поместить одно свойство в мою модель представления и установить сообщение об ошибке на этом свойстве. Я запутался, как этого добиться и как потом отобразить ошибку в View? И какой вариант рекомендуется/лучшая практика?
24
3
Лучшая практика заключается в изменении свойства словаря
ModelState
вашего контроллера следующим образом:Затем в представлении добавьте следующую строку рядом с полем email;
Это верно. Вы можете добавить сообщение об ошибке в модель представления:
а затем установить это свойство в модели представления и передать модель представления в представление:
и, наконец, в вашем сильно типизированном представлении используйте свойство вашей модели:
Таким образом, в основном мы заменяем использование
ViewBag
на сильно типизированную модель представления.Как по мне, принятый ответ не является лучшей практикой. Мы можем обработать все ошибки в аннотациях.
В нашей ViewModel мы указываем
ErrorMessage
для наших объектов.В нашем контроллере
И в нашем представлении