0
var s = myInventoryEntities.p_Forms().Select(i => new  { i.Customer, i.Order_ID }).Distinct().ToList();

ViewBag.MyData = s;

return View();

这给了我

    { Customer = "Bob", Order_ID = 2644550 }

在我的剃须刀代码中

我遍历数据

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

请帮忙!

“对象”不包含“客户”的定义

4

1 回答 1

2

ViewBag 数据的生命周期非常有限。您确定您是从设置 ViewBag 数据的相同操作方法进入此视图的吗?

建议:尽量避免动态类型如 ViewData/ViewBag。坚持强类型可以让你的代码更好的可读性/可维护性。

如果您的域对象和您要显示的内容相同,请不要费心创建 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>
}
于 2012-08-09T18:20:12.830 回答