I want to embed a partial view in an ASP.NET MVC page by returning it from an action method.
In my base view, I would have:
<%= Html.Action("MyPartialViewAction") %>
My controller would have an action method like:
[ChildActionOnly]
public ActionResult MyPartialViewAction()
{
return PartialView("MyPartialView");
}
I expected the returned partial view (MyPartialView) to have access to the ViewData that was set in the base page’s controller action but that doesn’t appear to be the case. If I insert the partial view by using the following in my base view it works:
<% Html.RenderPartial("MyPartialView") %>
I don’t want to do that though because I want my “MyPartialViewAction” to execute logic to determine WHICH partial view to return.
I believe that it actually creates a new controller, meaning that any view that it creates will have the ViewData from that controller, not the controller that created the view that is invoking the Action method. You might want to try: