ViewBagに値を割り当てようとすると、次のエラーが表示されます。
[System.Dynamic.DynamicObject]型の式に[]を使用してインデックスを適用できません
私のコードは次のとおりです。
public ActionResult Success()
{
ViewBag["SuccessBody"] = TempData["successBody"];
return View();
}
PS:どうしてこうするの?成功アクションにリダイレクトしているので、リダイレクト全体で持続する何かが必要だったからです。次に、値をViewBagに割り当てて、値を「共有」ビューに渡します。
やってみました
ViewBag.SuccessBody = TempData["successBody"];
ViewBagはViewDataの動的ラッパーであるため、これらの2つのステートメントは同じです。
ViewBag.SuccessBody = TempData["successBody"];
ViewData["SuccessBody"] = TempData["successBody"];
ViewBag
とViewData
は互換性があるように見えますが、内部のデータにアクセスする方法については異なるルールがあります。 ViewBag
にインデックスを付けようとすると問題が発生しますが、これは機能しません。
ViewBag
の場合、このようにドットでアイテムを逆参照します。
ViewBag.MyItem
ただし、ViewData
を使用すると、このようにキー値ディクショナリから適切なキーにインデックスを付けることにより、アイテムにアクセスできます。
ViewData["MyItem"]