Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 需要关于局部视图中错误处理的建议吗_C#_Asp.net Mvc 3_.net 4.0_Razor - Fatal编程技术网

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,否则视图不会抛出异常。