2013-09-26 84 views
-1

因此,您在页面中有各个部分,并且如果某个部分无法呈现,则页面的其余部分呈现没有问题。下一个请求,一切正常,或者至少在修复之前,所有网站都不会停止。这是由于SOA。如果Html.RenderAction或Html.Action失败

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

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

这是可能的吗?如果是这样怎么办?尝试/报告/下咽?

+0

你在这家最大的互联网公司使用过哪些技术? –

+2

哇。你问一个问题,我试图深入并得到这种答案?我可以从一个新手,而不是像你这样的用户期望这一点。回到雅虎答案,天才。 –

+0

对不起,如果我伤害你的感情。感谢downvote。 – DarthVader

回答

5

创建的helper方法,说Html.TryRenderActionHtml.TryAction被分别称为代替Html.RenderActionHtml.Action

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

5

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

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

对于Output.WriteLine +1 –