Как создать страницу с сообщением об общей ошибке?

На сайте Asp.Net Mvc 4 могут быть различные ошибки, сообщения об ошибках которых должны быть показаны конечным пользователям (например, "Не удается найти строку с идентификатором xxx.", "Невозможно удалить эту строку, поскольку от нее зависит xxx. ",... так далее).

Как (и каков наилучший подход) определить общую страницу ошибки, принять сообщение об ошибке и отобразить его? Или просто всплывающее диалоговое окно?

4 ответа

Вы можете создать CustomException и бросить, когда ему нужно. В глобальном asax вы должны переопределить Application_Error

protected void Application_Error(object sender, EventArgs e)
{
            Response.Clear();
            var httpContext = ((MvcApplication)sender).Context;
            var ex = Server.GetLastError();
            // check exception and redirect to your custom error page with Title, Description and url for redirect.
}

Создайте ErrorAction в контроллере.

Вы можете поймать ошибку и перенаправить на ErrorAction с сообщением. Покажи как хочешь.

Я надеюсь, вы понимаете мою точку зрения.

Я бы предложил создать частичное представление и простую модель ошибок. Вид будет представлен в макете. Модель ошибки может быть затем перенесена как TempData, так как она удаляется после первого чтения. в представлении, если у вас есть переменная, в TempData - вы показываете элемент с необходимым макетом, в противном случае - вы ничего не показываете. Кроме того, у вас может быть метод расширения для TempData, чтобы добавить ошибку.

Это то, что мы делали в одном из проектов, над которыми я работал раньше. У нас был тег div на нашей странице, где мы отображали все сообщения об успехах и неудачах. Это будет работать следующим образом:

  1. Мы бы получили сообщение от контроллера для просмотра через AJAX.
  2. Затем мы вставим это сообщение в тег div.
  3. Мы переключаем html-класс этого div на основании условия успеха. Если бы это было успешно, в этом случае мы бы отображали все сообщение зеленым цветом с галочкой, иначе, если это было бы ошибкой, мы отображали бы все сообщение красным цветом с крестиком. Оба класса css были определены в нашем site.css.

Я надеюсь, что ответил на ваш вопрос.

Другие вопросы по тегам