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 に答える