2012-09-07 36 views
1

顯示列表在控制器I填充ViewBag與類型(TYPEID,名稱)對象誤差從ViewBag

ViewBag.Types = types.ToList(); 

然後在視圖

@foreach (var item in ViewBag.Types) 
    { 
     @item.Name 
} 

此誤差與: '對象'不包含'Name'的定義

+0

您可以請您發佈'types'變量的確切定義嗎? – nemesv

回答

0

ViewBag,ViewData或者這樣的動態魔法物品都是邪惡因爲他們會nev呃告訴你,由於拼寫錯誤,你的視圖是否失敗,而在使用強類型模型時,如果出現問題,將會出現編譯時錯誤。而且你也得到了Intellisense的支持。

爲什麼不使用強類型的方法呢?

public ActionResult Create() 
{ 
    return View(types.ToList()); 
} 

,讓你查看強類型的對象/對象

@model IList<Types> 
@foreach(var item in Model) 
{ 
    <p>@item.Name</p> 
} 
+0

在這種情況下,我需要使用ViewBag – Danny

+1

你期待ViewBag在同一個視圖中工作,你要設置它的動作?不使用ViewModel的原因是什麼? – Shyju

+0

是的,這是正確的。這很複雜!只需要能夠從ViewBag中讀取一個列表 – Danny

0

讓我們假設你的類型是foo列表。 您通過ViewBag.Types只是你沒有辦法和在視圖中做到這一點:

@{ 
    var TypeList= (List<foo>)ViewBag.Types; 
} 

,然後就去做:

@foreach (var item in TypeList) 
    { 
     @item.Name 
    } 

注意:您可能需要的完整路徑寫信給你foo實體

+0

那結果:無法轉換類型的對象 'System.Collections.Generic.List'1 [<> f__AnonymousType3'2 [System.Int32,System.String]]' 爲類型「System.Collections.Generic.List – Danny

+0

確實這個錯誤出現在控制器或編輯? –

+0

它的視圖 – Danny