我在视图中有一些片段如下:
@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次,它不应该。
我需要每次请求只执行一次。
我怎样才能正确完成这项工作?或者我应该将此代码放在其他地方吗?
答案 0 :(得分:1)
这是ASP.NET MVC的设计。这是一个模板方法,它将始终被调用。
但是,如果您希望在出于性能原因而跳过代码执行,则调用是针对子操作的。使用if语句包装代码:
protected override IAsyncResult BeginExecuteCore(AsyncCallback callback, object state)
{
if (!ControllerContext.IsChildAction) {
.....
}
}