Routing in MVC - Front- & Back-End Development - Front- & Back-End Development - Progress Community
 Front- & Back-End Development

Routing in MVC

  • Routing in MVC
  • Hi all, 

    I'm trying to do something with unhandled exceptions.

    For some reason, it is very hard to show an error page if an unhandled exception occurs. I found a way to redirect 404, 403 etc. using an ErrorController. A 500 exception however always shows inside the active MVC view.

    What works is something like this (simplified code): 

       return View("Index", model);
    catch (Exception)
       return RedirectToRoute(ErrorControllerRoute.GetInternalServerError);

    This RedirectToRoute will redirect to:

    I wanted to do something like this in the OnException override of my BaseController class like this:

    protected override void OnException(ExceptionContext filterContext)
       filterContext.Result = RedirectToRoute(ErrorControllerRoute.GetInternalServerError);

    However, that is not working. The URL it generates in this case is:

    So, it looks like the ErrorController class is ignored.

    Any idea how this works within Sitefinity?

  • Hello Daniel,

    You can redirect to a controller route the following way:
    filterContext.Result = new RedirectToRouteResult(new
                       RouteValueDictionary(new controller = "Controller", action = "Error"));

    If you want to show a view for the error, you can use the following:
    public override void OnException(ExceptionContext filterContext)
                Exception ex = filterContext.Exception;
                Log.Write(ex, ConfigurationPolicy.ErrorLog);
                if (!string.IsNullOrEmpty(this.View))
                    this.View = HandleErrorAttributeCustom.defaultErrorView;

    @model HandleErrorInfo

    which you can also place in a attribute inheriting from HandleErrorAttribute.

    Hope the above helps.

    Nikola Zagorchev
    Do you want to have your say in the Sitefinity development roadmap? Do you want to know when a feature you requested is added or when a bug fixed? Explore the Telerik Sitefinity CMS Ideas&Feedback Portal and vote to affect the priority of the items