2012-04-16 41 views
2

看起來像一個簡單的問題,但我顯然缺少一些東西。當使用Html.Action時,父視圖中的部分視圖ViewBag數據不可用()

我有一個ViewBag,我在partialView中創建。 的PartialView正在經歷

@Html.Action() 

渲染其實這就是ActionMethod其內部正在建立ViewBag變量。 一旦設置它們在部分視圖內部可用,然而當我們回到父視圖變量中調用Html.Action()的變量不再可用時。

任何想法怎麼來的?我如何訪問在Html.Action()動作方法中分配的ViewBag變量?

P.S. 我看到以下問題: Can't access ViewBag in a partial view in ASP.NET MVC3

...從我收集的是ViewBag變量傳遞時,你只需渲染的局部視圖(@ Html.Partial()),但是當你渲染的部分他們不是查看另一個操作方法。

請幫忙嗎?

回答

3

根據此SO帖子Does a child action share the same ViewBag with its "parents" action?,子動作的ViewData/ViewBag無法從其父動作訪問。這種做法很有意義,因爲ViewData/ViewBag中存儲的信息不會在重定向中生存,並且在內部,子操作可能在完成執行後重定向回父操作。您希望將數據存儲在可以存活一次重定向的位置,因此請嘗試使用TempData,然後查看它是否有效。

+0

從來沒有使用過它,但只是讀了它,我認爲它可能工作。謝謝。 – Shenaniganz 2012-04-17 00:11:18

+0

+1完美適合我的需求,爲了從'HTMlHelper'類中獲得此類,您可以使用'helper.ViewContext.Controller.TempData',其中幫助器是'this HtmlHelper helper' – Rippo 2013-10-11 13:18:29

+0

使用TempData是實際的解決方案。 – 2015-12-02 10:26:20

相關問題