2

似乎是一个简单的问题,但我显然错过了一些东西。

我有一个在 partialView 中创建的 ViewBag。PartialView 正在通过

@Html.Action()

事实上,这就是在其中设置 ViewBag 变量的 ActionMethod。一旦设置它们在局部视图中可用,但是当我们回到从 ViewBag 调用 Html.Action() 的父级时,变量不再可用。

知道怎么来的吗?如何访问在 Html.Action() 操作方法中分配的 ViewBag 变量?

PS我看到了以下问题: Can't access ViewBag in a partial view in ASP.NET MVC3

...据此,我收集到 ViewBag 变量在您仅渲染局部视图( @Html.Partial() )时传递,但当您通过另一个操作方法渲染局部视图时它们不会传递。

请帮忙 ?

4

1 回答 1

3

根据这个SO帖子,子动作是否与其“父母”动作共享相同的ViewBag?,子操作的 ViewData/ViewBag 无法从其父操作访问。这是有道理的,因为存储在 ViewData/ViewBag 中的信息在重定向后无法幸免,并且在内部,子操作可能在完成执行后重定向回父操作。您希望将数据存储在可以在单次重定向中幸存的位置,因此请尝试改用TempData并查看它是否有效。

于 2012-04-16T23:34:11.140 回答