如何使用global.asax中的参数创建控制器对象并执行操作

时间:2017-01-04 16:59:55

标签: asp.net-mvc error-handling global-asax

我在global.asax

中有这段代码
 protected void Application_Error(object sender, EventArgs e)
        {
            // ...
            var routeData = new RouteData();
            routeData.Values.Add("controller", "Home");
            routeData.Values.Add("action", "Error");

            IController controller = new Controllers.HomeController();
            controller.Execute(new RequestContext(new HttpContextWrapper(Context), routeData));

        }

如何向Action方法/ RouteData添加参数?我想向用户显示异常消息。

2 个答案:

答案 0 :(得分:2)

我已经明白了,

routeData.Values.Add("message", exception.Message);

并在行动中抓住该参数

public ActionResult Index(string message)

答案 1 :(得分:1)

要显示自定义错误页面,您需要更改web.config。

<system.web> <customErrors mode="On" defaultRedirect="~/Error"> <error redirect="~/Error/NotFound" statusCode="404" /> </customErrors> </system.web>

您可以为不同的状态代码创建错误页面。

确保您有控制器和操作方法来返回视图。

在Application_error MVC之后,它将自动重定向到web.config中描述的同一页面。

有关详细信息,请参阅此link