i18n使用RenderAction

时间:2014-04-24 19:21:01

标签: asp.net-mvc internationalization asp.net-mvc-5

我在视图中有一些片段如下:

@Html.RenderAction("Foo","Home")

然后所有控制器都扩展BaseController

class HomeController : BaseController{

    protected override IAsyncResult BeginExecuteCore(AsyncCallback callback, object state)
    {
        .... // http://afana.me/post/aspnet-mvc-internationalization.aspx
    }
}

对于每个RenderAction调用,会发生这种情况。但它不需要导致它们是儿童行为。如果我有3个RenderAction调用,上面的代码正在执行3次,它不应该。

我需要每次请求只执行一次。

我怎样才能正确完成这项工作?或者我应该将此代码放在其他地方吗?

1 个答案:

答案 0 :(得分:1)

这是ASP.NET MVC的设计。这是一个模板方法,它将始终被调用。

但是,如果您希望在出于性能原因而跳过代码执行,则调用是针对子操作的。使用if语句包装代码:

protected override IAsyncResult BeginExecuteCore(AsyncCallback callback, object state)
    {    
      if (!ControllerContext.IsChildAction) {
       .....       
     }
}