У меня есть исключения и перенаправление пользователей на страницу с ошибкой. Я передаю сообщение об исключении и URL-адрес возврата, чтобы сообщить пользователю, что произошло, и позволить им вернуть другую страницу.ASP.NET MVC - декларативная переадресация при ошибке
try
{
return action(parameters);
}
catch (Exception exception)
{
ErrorViewModel errorModel = new ErrorViewModel();
errorModel.ErrorMessage = "An error occured while doing something.";
errorModel.ErrorDetails = exception.Message;
errorModel.ReturnUrl = Url.Action("Controller", "Action");
return RedirectToAction("Index", "Error", errorModel);
}
Это похоже образом слишком много кода, чтобы обернуть вокруг каждого действия. Я использую глобальный фильтр для ошибок:
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
HandleErrorAttribute attribute = new HandleErrorAttribute();
filters.Add(attribute);
}
и у меня есть мои настройки web.config как это:
<customErrors mode="On" defaultRedirect="~/Error/Unknown">
Но это работает только для необработанных исключений.
Я хочу, чтобы исключения вызывали перенаправление на контроллер ошибок/действие с параметром, содержащим данные об исключении. Было бы неплохо, если бы я мог указывать обратный URL-адрес по принципу действия за действиями или иметь значение по умолчанию, если оно не указано.
Это помогло ... Так чертовски много – TheGeekZn