如果Html.RenderAction或Html.Action失败

时间:2013-09-26 19:18:22

标签: c# asp.net-mvc asp.net-mvc-3 asp.net-mvc-4

因此,您在页面中有部分,如果一个部分无法呈现,则页面的其余部分呈现没有问题。下一个请求,一切正常,或至少直到它被修复,所有网站都没有下降。这是由于SOA。

我想通过Html.RenderActionHtml.Action做同样的事情。

所以,如果我有@Html.RenderAction("Foo","Bar")并且如果调用失败,我仍然希望页面上的其他部分呈现。

这可能吗?如果是这样怎么做?尝试/报告/吞?

2 个答案:

答案 0 :(得分:5)

您可以在Razor .cshtml文件中使用标准的C#try / catch / finally块。

@{
    try
    {
        Html.RenderAction("asdfasdf");   
    }
    catch
    {
        Output.WriteLine("<p>Failed to load asdfasdf</p>");
    }
}

答案 1 :(得分:5)

创建帮助方法,比如说Html.TryRenderActionHtml.TryAction分别称为,而不是Html.RenderActionHtml.Action

反过来,这些应该调用现有的方法,但它们应该在try块内部执行,捕获并记录异常,而不会放弃页面的其余部分。