0

コントローラに1つのアクションがあります:

public ActionResult GiftVochure()
{
  if (Request.QueryString["gc"] != "")
  {
    var obj = from b in context.GiftCards
              join cus in context.Customers on b.CustomerID equals cus.ID
              where b.ID == int.Parse(Request.QueryString["gc"])
              select new
              {
                  b.ID,
                  b.Date,
                  b.CardNo,
                  b.Price,
                  CustomerName = cus.FirstName + " " + cus.LastName
              };
      return View(obj.ToList());
  }
  return View();
}

そして、「obj」をループしてGiftVochureビューに表示したいのですが、これを行う方法を知っている人はいますか?

ありがとう。

4

1 に答える 1

1

クエリによって投影された匿名タイプを置き換えるモデルタイプを定義することから始める必要があります。

public class CardInfo
{
    int ID { get; set; }
    DateTime Date { get; set; }
    int CardNo { get; set; }
    double Price { get; set; }
    string CustomerName { get; set; }
}

アクションメソッドの変更:

var obj = from b in context.GiftCards
          join cus in context.Customers on b.CustomerID equals cus.ID
          where b.ID == int.Parse(Request.QueryString["gc"])
          select new CardInfo
          {
              ID = b.ID,
              Date = b.Date,
              CardNo = b.CardNo,
              Price = b.Price,
              CustomerName = cus.FirstName + " " + cus.LastName
          };
return View(obj);

次に、GiftVochureビューをこのタイプのシーケンスに強く入力する必要があります。

@model IEnumerable<CardInfo>

最後に、ビュー内のアイテムを繰り返すことができます。

@foreach(CardInfo current in Model) {
   //display info
}

おそらく、単一のオブジェクトを表示するためのマークアップを部分ビューに移動する必要があります。次に、ループでレンダリングします。

于 2012-07-16T07:56:13.640 に答える