2012-04-16 27 views
2

シンプルな問題のようですが、明らかに何か不足しています。PartialView ViewBagデータは、親ビューでは使用できません。Html.Action()を使用すると表示されます。

私はpartialViewで作成したViewBagを持っています。 PartialViewはViewBag変数が設定されている内部をActionMethodだ事実

@Html.Action() 

を経てレンダリングされています。 一度設定されると、部分ビューの内部で使用できますが、ViewBag変数からHtml.Action()が呼び出されている親に戻ると、変数は使用できなくなります。

どのように考えられますか? Html.Action()アクションメソッドの内部で割り当てられたViewBag変数にアクセスするにはどうすればよいですか?

P.S. 私は、次の質問を見た: Can't access ViewBag in a partial view in ASP.NET MVC3

...それから、私はあなたが単に部分図を(@ Html.Partial())レンダリングするときViewBag変数が渡されていることを集めていますが、部分的にレンダリングするとき、彼らはないですが別のアクションメソッドを表示します。

ヘルプしてください?

答えて

3

これによれば、Does a child action share the same ViewBag with its "parents" action?によれば、子アクションのViewData/ViewBagはその親アクションからアクセスできません。 ViewData/ViewBagに格納された情報はリダイレクトに残っていないため、この種のことは意味があります。内部的には、子アクションはおそらく実行終了後に親アクションにリダイレクトされています。 1回のリダイレクトに耐えられる場所にデータを保存したいので、代わりにTempDataを試してみましょう。

+0

これまで使用したことはありませんでしたが、ただ読んでみるとうまくいくと思います。ありがとう。 – Shenaniganz

+0

+1私のニーズにぴったりです。これは 'HTMlHelper'クラスから得ることができます。ヘルパーは' this HtmlHelper helper'のところで 'helper.ViewContext.Controller.TempData'を使用できます。 – Rippo

+0

TempDataの使用は実際の解決策です。 –

関連する問題