我构建了一个自定义异常,并且每当我认为我的应用程序处于“特殊状态”时,我就抛出此类的实例。这个异常是在应用程序逻辑类(服务在我的情况)中引发的。 现在,我也有默认的ASP MVC异常重定向,但在这些自定义异常的情况下,我不希望它重定向到'错误'页面,而是在一个div中显示消息(例如在我的Layout.cshtml页面)。我正在考虑添加异常消息到TempData [“ApplicationError”]。 我只想写这个代码一次,而不是遍及我的控制器操作方法。所以,在我的基本控制器I类重写保护无效onException的(ExceptionContext filterContext)和我的代码如下所示:显示在ASP中的自定义异常消息MVC
protected override void OnException(ExceptionContext filterContext)
{
if (filterContext.Exception is InvalidOperationException)
TempData["ApplicationError"] = filterContext.Exception.Message;
else
base.OnException(filterContext);
}
我的问题是,我在这个异常被抛出仍然重定向到默认的错误页面。我不希望发生这种情况。我想要的是在用户所在的相同视图中以友好的div显示自定义异常的消息。你有什么想法,我怎么能做到这一点?
谢谢。这种方法的问题是,我需要在引发此异常的所有方法中复制/粘贴try-cacth-AddError。我不想要这个。我需要像中央(基础设施)的地方来处理这个问题。在大多数情况下,我甚至没有支持我的视图相关数据的视图模型。 – 2012-03-31 12:52:44
有一个ViewModel是一个更好的主意,因为它会给你强烈的类型化视图。 – Shyju 2012-03-31 12:54:58
现在不需要虚拟机,特别是当他们似乎在解决我的问题时。 – 2012-03-31 13:29:54