2013-12-20 14 views
17

私は次のエラーを取得するViewBagに値を代入しようとすると:は、型の式に[]でインデックスを適用することはできません「System.Dynamic.DynamicObject」

Cannot apply indexing with [] to an expression of type 'System.Dynamic.DynamicObject'

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

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

PS:なぜ私はこれを行うことができますか?私はSuccessアクションにリダイレクトしているので、リダイレクトを超えて持続するものが必要でした。次に、Valueを '共有'ビューに渡すために値をViewBagに割り当てます。

+0

しかし、あなただけのTempDataを使用することができます。 1回のリダイレクトでも存続します。 – kaptan

+0

はい、残念ながら、共有ビューはTempDataオブジェクトをサポートしていません。 – RealityDysfunction

+0

このコードをコンパイルするためにどのバージョンのVisual Studioを使用していますか? – JaredPar

答えて

27

はあなたが

ViewBag.SuccessBody = TempData["successBody"]; 
+0

それでした!ありがとうございます。 – RealityDysfunction

+1

インデクサーを使用できない理由は何ですか? –

+0

DynamicObjectsは、子を配列として直接公開しません。これはちょうどそれが設計された方法です。 http://msdn.microsoft.com/en-us/library/system.dynamic.dynamicobject(v=vs.110).aspx – Slick86

16

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

ViewBag.SuccessBody = TempData["successBody"]; 
ViewData["SuccessBody"] = TempData["successBody"]; 
関連する問題