web-dev-qa-db-ja.com

[System.Dynamic.DynamicObject]型の式に[]を使用してインデックスを適用できません

ViewBagに値を割り当てようとすると、次のエラーが表示されます。

[System.Dynamic.DynamicObject]型の式に[]を使用してインデックスを適用できません

私のコードは次のとおりです。

public ActionResult Success()
{
   ViewBag["SuccessBody"] = TempData["successBody"];
   return View();
}

PS:どうしてこうするの?成功アクションにリダイレクトしているので、リダイレクト全体で持続する何かが必要だったからです。次に、値をViewBagに割り当てて、値を「共有」ビューに渡します。

27

やってみました

ViewBag.SuccessBody = TempData["successBody"];
35
Slick86

ViewBagはViewDataの動的ラッパーであるため、これらの2つのステートメントは同じです。

ViewBag.SuccessBody = TempData["successBody"];
ViewData["SuccessBody"] = TempData["successBody"];
22
Moeri

ViewBagViewDataは互換性があるように見えますが、内部のデータにアクセスする方法については異なるルールがあります。 ViewBagにインデックスを付けようとすると問題が発生しますが、これは機能しません。

ViewBagの場合、このようにドットでアイテムを逆参照します。

ViewBag.MyItem

ただし、ViewDataを使用すると、このようにキー値ディクショナリから適切なキーにインデックスを付けることにより、アイテムにアクセスできます。

ViewData["MyItem"]

3
FoxDeploy