2

考虑以下情况:

有一个 ASP.NET MVC 应用程序利用 ELMAH 进行集中异常记录。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>

我想到的另一个想法是,也许控制器可以用于带有相应 ActionResults 的 ErrorHandling。但目前我不知道如何做到这一点。

非常感谢任何帮助...

此致,

戈登

4

1 回答 1

0

由于您的异常类和视图都是特定于模型的,您能否将所需的额外数据存储在异常本身中?

if(badCondition)
{
    throw new ModelSpecificException("a bad thing happened", extraData);
}

在您看来,您可以通过 Server.GetLastError() 获取异常,然后将其转换为正确的类型以通过属性访问额外的数据。这可能是一种更简洁的方法,因为它将异常视为模型并将您排除在 ViewData 集合之外。

于 2010-01-14T16:22:50.743 回答