2013-12-20 21 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:爲什麼我這樣做,你可能會問?因爲我正在重定向到「成功」操作,並且我需要一些在重定向中持續存在的內容。然後,我將值分配給ViewBag以將值傳遞給「共享」視圖。

+0

但你可以只使用TempData的。它會在一次重定向後生存下來。 – 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的動態包裝,所以這兩個語句是相同的:

ViewBag.SuccessBody = TempData["successBody"]; 
ViewData["SuccessBody"] = TempData["successBody"]; 
相關問題