2012-08-09 68 views
0
var s = myInventoryEntities.p_Forms().Select(i => new { i.Customer, i.Order_ID }).Distinct().ToList(); 

ViewBag.MyData = s; 

return View(); 

這給了我使用一個IEnumerable <匿名類型>動態類型視圖中

{ Customer = "Bob", Order_ID = 2644550 } 

在我的剃刀代碼

我遍歷數據

@foreach (var x in @ViewBag.MyData){ 
x.Customer // Does not exist! :(
} 

請幫幫忙!

「對象」不包含「客戶」

+1

你需要的'@'X之前?難道只是'x'? – 2012-08-09 18:12:39

+0

@DavidHoerster:不需要,在這種情況下 – Shyju 2012-08-09 18:35:28

回答

2

ViewBag數據的續航時間是非常有限的定義。你確定你是從設置ViewBag數據的相同操作方法來看這個視圖嗎?

建議:儘量避免動態類型liek ViewData/ViewBag。堅持強類型使您的代碼更好的可讀性/可維護性。

如果您的Domain對象和您要顯示的內容是相同的,請不要爲創建ViewModel而煩惱。否則創建一個視圖模型

public class CustomerOrder 
{ 
    public string CustomerName 
    public int OrderID { set;get;} 
    //other properties as relevant (to the view) 
} 

並返回,而不是ViewBag

public ActionResult GetOrders() 
{ 

    var s = myInventoryEntities.p_Forms(). 
      Select(i => new CustomerOrder { 
              CustomerName= i.Customer, 
              OrderID=i.Order_ID 
             }).Distinct().ToList(); 
    return View(s); 
} 

並在視圖

@model IList<CustomerOrder> 
@foreach (var x in Model) 
{ 
    <p>@x.Customer</p> 
} 
+1

值得注意的方法!謝謝! – Pinch 2012-08-09 18:50:54

+0

歡迎您!很高興我能幫上忙 :) – Shyju 2012-08-09 18:51:13