【问题标题】:PartialView ViewBag data not available in the parent View when using Html.Action()使用 Html.Action() 时,PartialView ViewBag 数据在父视图中不可用
【发布时间】:2012-04-28 07:17:28
【问题描述】:

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

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

呈现
@Html.Action()

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

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

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

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

请帮忙?

【问题讨论】:

    标签: c# asp.net-mvc asp.net-mvc-3 html-helper


    【解决方案1】:

    根据此 SO 帖子 Does a child action share the same ViewBag with its "parents" action?,无法从其父操作访问子操作的 ViewData/ViewBag。这种做法是有道理的,因为存储在 ViewData/ViewBag 中的信息在重定向后无法幸免,并且在内部,子操作可能在完成执行后重定向回父操作。您希望将数据存储在一个可以承受单次重定向的位置,因此请尝试改用TempData,看看它是否有效。

    【讨论】:

    • 以前从未使用过它,但只是阅读了它,我认为它可能会起作用。谢谢。
    • +1 非常适合我的需求,要从 HTMlHelper 类中获得此功能,您可以使用 helper.ViewContext.Controller.TempData 其中助手是 this HtmlHelper helper
    • 使用 TempData 是实际的解决方案。
    猜你喜欢
    • 2016-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多