将ViewData传递给使用Html.Action返回的PartialView

时间:2010-05-05 13:53:45

标签: asp.net-mvc-2 action partial-views

我希望通过从操作方法返回来在ASP.NET MVC页面中嵌入部分视图。

在我的基本视图中,我会:

<%= Html.Action("MyPartialViewAction") %>

我的控制器会有一个动作方法,如:

[ChildActionOnly]
public ActionResult MyPartialViewAction()
{
    return PartialView("MyPartialView");
}

我希望返回的局部视图(MyPartialView)能够访问在基页的控制器操作中设置的ViewData,但似乎并非如此。如果我在基本视图中使用以下内容插入局部视图,则可以使用:

<% Html.RenderPartial("MyPartialView") %>

我不想这样做,因为我希望我的“MyPartialViewAction”执行逻辑以确定要返回的WHICH部分视图。

1 个答案:

答案 0 :(得分:3)

我相信它实际上创建了一个新的控制器,这意味着它创建的任何视图都将具有来自该控制器的ViewData,而不是创建调用Action方法的视图的控制器。您可能想尝试:

  1. 将您的选择逻辑重构为单独的方法,并在原始操作中使用它来选择部分视图名称。在模型中填充并通过RenderPartial使用它。
  2. 使用TempData(或Session,直接)来保存上一个动作的ViewData并从中保存新控制器的ViewData。
  3. 如果所需数据有限,请将其传递给RouteValueDictionary - 您的操作需要将这些作为参数接收。