如果Html.RenderAction或Html.Action失败

Dar*_*der -1 c# asp.net-mvc asp.net-mvc-3 asp.net-mvc-4

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

我想通过Html.RenderAction或做同样的事情Html.Action.

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

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

Tre*_*ott 5

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

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


The*_*kis 5

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

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