2012-07-16 89 views
0

我在我的控制器的一個動作:如何調用對象從控制器中的視圖來顯示ASP.net MVC

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(); 
} 

而且我想採取「目標文件」在GiftVochure意見迴路和顯示器, 有誰知道如何做到這一點?

謝謝。

回答

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 
} 

您應該將您的標記顯示爲單個對象到局部視圖。然後在你的循環中渲染它。

+0

我用MVC 2,我不能使用「@」。 – Nothing 2012-07-16 08:46:15

+0

@socheata我相信你可以在ASP.NET視圖引擎中找到強類型視圖和foreach循環的語法:) – 2012-07-16 08:50:41

+0

好吧,但是當我這樣做時,它有一個錯誤'ModelName不包含公共定義'GetEnumerator'' – Nothing 2012-07-16 09:17:22