2

単純な問題のようですが、明らかに何かが欠けています。

部分ビューで作成したViewBagがあります。PartialViewは、通過することによってレンダリングされています

@Html.Action()

実際、これがActionMethodであり、その中でViewBag変数が設定されています。一度設定すると、部分ビュー内で使用できるようになりますが、ViewBag変数からHtml.Action()が呼び出されている親に戻ると、使用できなくなります。

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

PS私は次の質問を見ました: ASP.NETMVC3の部分ビューでViewBagにアクセスできません

...そこから、ViewBag変数は、単に部分ビューをレンダリングするときに渡される(@ Html.Partial())が、別のアクションメソッドを介して部分ビューをレンダリングするときは渡されないことを収集しました。

助けてください ?

4

1 に答える 1

3

この SO 投稿によれば、子アクションは「親」アクションと同じ ViewBag を共有しますか? 、子アクションの ViewData/ViewBag は親アクションからアクセスできません。ViewData/ViewBag に格納された情報はリダイレクト後も存続せず、内部的に子アクションは実行終了後に親アクションにリダイレクトされる可能性があるため、この種のことは理にかなっています。1 回のリダイレクトに耐えることができる場所にデータを保存する必要があるため、代わりにTempDataを使用してみて、機能するかどうかを確認してください。

于 2012-04-16T23:34:11.140 に答える