I have some fragments in a view as follows:
@Html.RenderAction("Foo","Home")
Then all the controllers extends BaseController
class HomeController : BaseController{
protected override IAsyncResult BeginExecuteCore(AsyncCallback callback, object state)
{
.... // http://afana.me/post/aspnet-mvc-internationalization.aspx
}
}
What happens is, for every RenderAction call, this is executed as well. But it doesnt need to cause they are child actions. If i have 3 RenderAction call, the above code is being executed 3 times, which it shouldn't.
I need this executed only once per request.
How can i get this done properly? Or should i put this code somewhere else?
This is by design from ASP.NET MVC. This is a template method, and it will always be called.
However, if you want to skip code execution for performance reasons if the call is for a child action. Wrap the code with an if statement like this: