0

我的控制器中有一个动作:

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 Views中,有谁知道,怎么做?

谢谢。

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 回答