考虑以下情况:
有一个ASP.NET MVC应用程序,它利用ELMAH进行集中式ExceptionLogging。 Controller使用HandlerError属性进行标记,以捕获特定类型的异常并向用户显示视图。例如
[HandleError(ExceptionType = typeof(ModelSpecificException), View = "Exceptions/ModelSpecific")]
public partial class HeavyController : Controller
{
// Constructors and ActionResults are following here...
}
到目前为止,这是按预期工作的。我现在面临的问题是,“ModelSpecific”错误页面需要ViewData中的一些对象。有没有人提示填充以下类型
的ViewPage的ViewData字典System.Web.Mvc.ViewPage<HandleErrorInfo>
我想到的另一个想法是,Controller可能会用于ErrorHandling和各自的ActionResults。但目前我还不了解如何实现这一目标。
非常感谢任何帮助...
最好的问候,
戈登
答案 0 :(得分:0)
由于您的异常类和视图都是特定于模型的,您是否可以在异常中存储所需的额外数据?
if(badCondition)
{
throw new ModelSpecificException("a bad thing happened", extraData);
}
在您的视图中,您可以通过Server.GetLastError()获取异常,然后将其强制转换为正确的类型以通过属性访问额外数据。这可能是一种更简洁的方法,因为它将异常视为模型并使您远离ViewData集合。