MVC RedirectToAction в блоке перехвата - PullRequest
2 голосов
/ 25 ноября 2011

Я пытаюсь перенаправить действие с одного контроллера на другой, если что-то не так в блоке попытки. Я хочу добиться общего способа представления пользователю представления о том, что что-то не так в разных контроллерах, путем направления всех ошибок на обработку ошибок ActionResult в моем Homecontroller. Вот как выглядит код:

    try
    {
        Code that may go wrong
    }
    catch (Exception e)
    {
        set the errorcode (integer)

        Logg the error (write a simple textfile)

        RedirectToAction("ErrorHandling", "Home", errorcode);
    }

И в Homecontroller я хотел бы создать представление, сообщающее пользователю, что что-то пошло не так:

    public ActionResult ErrorHandling(int errorcode)
    {
        do something with the errorcode

        return View(different view depending on errorcode);
    }

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

1 Ответ

1 голос
/ 25 ноября 2011

В вашем блоке catch попробуйте

  return new RedirectToRouteResult(new RouteValueDictionary
    { 
        {"Controller", "Home"}, 
        {"Action", "ErrorHandling"},
        {"errorcode", errorcode}
    });

Может быть, вы просто забыли возврат в своем коде:

return RedirectToAction("ErrorHandling", "Home", errorcode);
...