【发布时间】:2016-09-29 03:26:11
【问题描述】:
我正在使用自定义错误 (web.config) 将未处理的异常发送到我的 ErrorController。
在我的主控制器中,我抛出一个异常,在 catch 块中捕获它,并将 TempData 设置为有一些用户友好的消息。然后我将throw 发送到ErrorController。
当我在这里查看TempData 时,它是空的(Session 也是如此,但它会是,不是吗?)。
我确定它不应该是空的,这是在控制器之间发送数据的正确方法......但它不起作用!我的理解有误吗?
HomeController:
catch (Exception ex)
{
TempData["MsgForUser"] = "useful message to show";
// Do some logging...
throw;
}
ErrorController:
public ActionResult DisplayError(int id)
{
ViewBag.MsgForUser = TempData["MsgForUser"];
return View();
}
Web.config:
<system.web>
<customErrors mode="On" defaultRedirect="~/ErrorPage/DisplayError">
<error redirect="~/Error/DisplayError/403" statusCode="403" />
<error redirect="~/Error/DisplayError/404" statusCode="404" />
<error redirect="~/Error/DisplayError/500" statusCode="500" />
</customErrors>
【问题讨论】:
-
@ScottWeldon 这只是我的偏好,但代码中的标题(ErrorController、Web.config)不需要在代码块中,它只是看起来有点奇怪。
标签: asp.net-mvc tempdata