2013-06-18 3 views
1

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

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

ответ

1

Вы можете создать 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. 
} 
+0

Звучит как элегантное решение. Итак, 'Application_Error' обрабатывает только эти пользовательские исключения? У вас есть более подробный пример? – ca9163d9

0

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

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

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

1

Создать ошибку в контроллере.

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

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

0

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

Смежные вопросы