Updated on Kisan Patel
This post will explain you how to handle error for controller action method and redirect the user to
a default error page?
To handle the error for the controller action method, first set the customError
mode “on” under system.web
in the root web.config file.
<system.web> <customErrors mode="On"/> </system.web>
When the customErrors mode is “On”, any unhandled error redirects to the default error view that is under ~/Views/Shared/Error.cshtml
So lets add Error.cshtml view inside ~/Views/Shared/ and add following code
@model System.Web.Mvc.HandleErrorInfo @{ ViewBag.Title = "Error"; } <hgroup class="title"> <h1 class="error">Error.</h1> <h2 class="error">An error occurred while processing your request.</h2> </hgroup> <p> Controller: @Model.ControllerName </p> <p> Action: @Model.ActionName </p> <p> Exception: @Model.Exception </p>
In the above view, the model is System.Web.Mvc.HandleErrorInfo
that holds the error exception details like ControllerName
, ActionName
in which error occurred and what error occurred.
Above functionality will work only when below settings remains intact in ~/App_Start/FilterConfig.cs page.
public class FilterConfig { public static void RegisterGlobalFilters(GlobalFilterCollection filters) { filters.Add(new HandleErrorAttribute()); } }
Global.asax.cs
protected void Application_Start() { FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); }
Now, lets test the above configuration code by adding below error action method into HomeController
public ActionResult HandleError() { int i = 0; var result = 1 / i; return View(); }
Above controller method will throw error and because customErrors
mode is set to “On” in web.config file so user gets redirected to below view page under Shared folder.