我正在尝试处理我的c#MVC应用程序中的所有异常。
所有控制器都继承自BaseController,所以我认为我可以覆盖OnException(protected override void OnException(ExceptionContext filterContext)
)。
但我不想重定向到错误页面,我想要做的是回到发起请求保持其状态的页面。因此,如果我的表单中有一个由用户填写的输入,则在处理异常之后,我想要显示该表单及其输入,其中包含用户填写的信息。
注意:并非所有视图都是强类型的。
示例:
USER:myuser < - 在输入标记中输入的文本
处理异常后,我想回到显示异常消息的上一个视图。
USER:myuser < - 在输入标记中输入的文字 我的异常消息
答案 0 :(得分:2)
验证不应被视为未处理的例外!请阅读Model Validation in ASP.NET MVC
以了解此情况。
正如其名称所示,未处理的异常仅在特殊情况下才会发生。例外情况是,当它发生时,您的应用程序无法处理请求。因此,重定向到已知状态没有意义,因为在发生未处理的异常时没有状态。在这种情况下,您可以做的最好的事情是记录异常以进行进一步分析,并将用户重定向到500错误页面,通知他出现了问题。
结论: