2009-06-24 73 views
1

我想要NerdDinner工作,並有一些麻煩。書呆子晚餐,可能是一個極端noob問題,列表晚餐

我很快就注意到actionResult for index發生的地方,並且看到dinnerRepository中的項目位於asignment運算符的右側。

但是,當我逐步瀏覽到代碼的下一行時,傳遞給視圖的dinners不包含記錄集。

任何人都可以指出我出錯的地方。

結果是頁面呈現完美,但沒有記錄顯示。

namespace NerdDinner.Controllers 
{ 
    public class DinnersController : Controller 
    {  
     DinnerRepository dinnerRepository = new DinnerRepository(); 

     // GET: /Dinners/ 
     public ActionResult Index() 
     { 
      var dinners = dinnerRepository.FindUpcomingDinners().ToList(); 

      return View("Index", dinners);    
     } 

     // GET: /Dinners/Details/2 
     public ActionResult Details(int id) 
     { 
      Dinner dinner = dinnerRepository.GetDinner(id); 

      if (dinner == null) 
       return View("NotFound"); 
      else 
       return View("Details", dinner); 
     } 
    } 
} 

這裏是視圖代碼以及

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master"  Inherits="System.Web.Mvc.ViewPage<IEnumerable<NerdDinner.Models.Dinner>>" %> 



<asp:Content ID="Main" ContentPlaceHolderID="MainContent" runat="server"> 

<h2>Upcoming Dinners</h2> 

<ul> 
<% foreach (var dinner in Model) 
    {%> 

<li> 
<%= Html.Encode(dinner.Title)%> 
on 
<%= Html.Encode(dinner.EventDate.ToShortDateString())%> 
@ 
<%= Html.Encode(dinner.EventDate.ToShortTimeString())%> 


</li> 
<% } %> 

</ul> 
</asp:Content> 

和型號代碼以及

公共類DinnerRepository { 私人NerdDinnerDataContext分貝=新NerdDinnerDataContext();

// Query Methods 

    public IQueryable<Dinner> FindAllDinners() 
    { 
     return db.Dinners; 
    } 

    public IQueryable<Dinner> FindUpcomingDinners() 
    { 
     return from dinner in db.Dinners 
       where dinner.EventDate > DateTime.Now 
       orderby dinner.EventDate 
       select dinner; 
    } 

    public Dinner GetDinner(int id) 
    { 
     return db.Dinners.SingleOrDefault(d => d.DinnerID == id); 
    } 

    // Insert/Delete Methods 
+0

也許這是因爲您使用的是「DinnerRepository」而不是「DinerRepository」:) – scottm 2009-06-24 00:55:29

+0

我非常非常尷尬,代碼沒有錯。這與數據庫中的數據有關。 感謝您的支持 – 2009-06-24 23:11:52

回答

1

我剛剛通過該教程,幾乎所有工作。我會走過這些步驟。

  1. (顯而易見)檢查數據庫中是否有要抓取的數據。
  2. 檢查您的DinnerRepository是否返回所有晚餐的IQueryable對象,調試模式應允許您擴展查詢。聽起來像你這樣做,但你有點模糊,你說的右側參數包含晚餐項目,但你分配給它的變量不包含下一行的項目?
  3. 確保您的視圖頁繼承自強類型視圖。例如。 System.Web.Mvc.ViewPage<IEnumerable<NerdDinner.Models.Dinner>>
0

我想知道如果視圖的ViewData不與正在傳遞的dinners對象正確對齊?嘗試通過View()調用切換傳遞給ViewData [「dinners」] = dinners的晚餐。然後更新UI代碼,將晚餐拉出視圖數據,而不是現在可能引用的模型。

你可以發佈你的視圖代碼嗎?

0

請檢查您的DinnersRepository。如果這一行:

var dinners = dinnerRepository.FindUpcomingDinners()。ToList();

正在返回'空記錄集',您應該調查爲什麼通過加入(快捷方式F11)存儲庫方法。

在'晚餐'上添加一個快速監視並跳過該行,如果有任何數據,您肯定應該看到一個非空列表。

+0

當我快速觀看dinnerRepository時,我看到了記錄集,但我沒有在晚餐上看到它,但我可以認爲這是因爲該聲明尚未運行。 – 2009-06-24 22:07:38

相關問題