2012-08-09 55 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