C# 需要关于局部视图中错误处理的建议吗
我似乎找不到答案。基本上,在一个视图中,我得到了C# 需要关于局部视图中错误处理的建议吗,c#,asp.net-mvc-3,.net-4.0,razor,C#,Asp.net Mvc 3,.net 4.0,Razor,我似乎找不到答案。基本上,在一个视图中,我得到了 @{ Html.RenderAction("PartialViewAction", "SomeController"); } 比方说,这个局部操作引发了一个异常:DB连接断开,或者其他什么。如何向用户显示错误 我看到的所有文章/博客都讨论(非部分)视图中的错误处理以及AJAX调用中呈现的部分。但是这种情况两者都不是。我认为每个视图都应该处理它们的异常,因此您的逻辑应该在视图中,但是如果我们记住MVC规则,异常处理应该在控制器上,因
@{
Html.RenderAction("PartialViewAction", "SomeController");
}
比方说,这个局部操作引发了一个异常:DB连接断开,或者其他什么。如何向用户显示错误
我看到的所有文章/博客都讨论(非部分)视图中的错误处理以及AJAX调用中呈现的部分。但是这种情况两者都不是。我认为每个视图都应该处理它们的异常,因此您的逻辑应该在视图中,但是如果我们记住MVC规则,异常处理应该在控制器上,因为它们负责与模型通信。所以问题是如何让它们在最终视图中显示。我不知道这是否有帮助,但我会尝试解决方法 其思想是在列表中的请求期间订阅您的异常。例如,一个优雅的解决方案可能是将此列表放在您的Viewbag中,然后在您的全局布局中将其写入视图中
<ul name="hiddenExceptions" class="hidden">
<li>exception 1 message wrote in the layout</li>
<li>exception 2</li>
</ul>
- 布局中写入的异常1消息
- 例外情况2
稍后,您可以使用一个脚本来迭代此列表,并采取适当的操作、在框中显示它们、在页面顶部显示等等
我想,希望它对错误显示有帮助。但是,对于局部视图我该怎么办?它无法显示,因为它出错了。比方说,如果视图模型由于错误而为空。我会只显示空的HTML元素,并在错误列表中说数据应该在那里,但太糟糕了,它不是吗?:)如果在局部视图中向异常列表中添加其他元素,您可以在那里访问ViewBag“比方说,此局部操作引发异常:DB连接断开,或其他任何情况”-您可以在控制器中执行DB访问,或任何可能引发异常的操作。然后将ViewModel传递给视图,除非有bug,否则视图不会抛出异常。