Asp.net mvc 2 将ViewData传递给使用Html.Action返回的PartialView

Asp.net mvc 2 将ViewData传递给使用Html.Action返回的PartialView,asp.net-mvc-2,action,partial-views,Asp.net Mvc 2,Action,Partial Views,我想通过从操作方法返回部分视图,将其嵌入ASP.NET MVC页面中 在我的基本观点中,我会: <%= Html.Action("MyPartialViewAction") %> 我希望返回的部分视图(MyPartialView)能够访问在基本页的控制器操作中设置的ViewData,但情况似乎并非如此。如果在基本视图中使用以下命令插入局部视图,则该操作有效: <% Html.RenderPartial("MyPartialView") %> 我不想这样做,因为我希

我想通过从操作方法返回部分视图,将其嵌入ASP.NET MVC页面中

在我的基本观点中,我会:

<%= Html.Action("MyPartialViewAction") %>
我希望返回的部分视图(MyPartialView)能够访问在基本页的控制器操作中设置的ViewData,但情况似乎并非如此。如果在基本视图中使用以下命令插入局部视图,则该操作有效:

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


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

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

  • 将选择逻辑重构为单独的方法,并在原始操作中使用它来选择局部视图名称。将其填充到模型中,并通过RenderPartial使用它
  • 使用TempData(或直接使用Session)保存上一个动作的ViewData,并从中删除新控制器的ViewData
  • 如果所需数据有限,则将其传递到RouteValueDictionary中——您的操作需要将这些数据作为参数接收
  • <% Html.RenderPartial("MyPartialView") %>