2009-06-24 14 views
1

私はNerdDinnerを働かせようとしているが、少し問題がある。Nerdの夕食、おそらく極端な騒ぎの質問、リストの夕食

私はindexのactionResultが発生したところで素早く監視し、dinnerRepositoryの項目がasignment演算子の右側にあることを確認しました。

しかし、コードの次の行に進むと、夕食はビューに渡され、レコードセットは含まれません。

誰かが私が間違っているところを指摘できますか。

結果、ページは完全にレンダリングされますが、レコードは表示されません。

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

あなたが「DinerRepository」:) – scottm

+0

「DinnerRepository」を使用していないので、多分それは私が非常に非常に恥ずかしいですが、コードには何の問題もありません。それはdbのデータと関係がある。 あなたのサポートに感謝します –

答えて

1

私はちょうどそのチュートリアルを行って、ほとんどすべての作業を完了しました。私はこれらのステップを歩くだろう。

  1. (明らかな)把握するデータがデータベースにあることを確認します。
  2. DinnerRepositoryがすべてのディナーのIQueryableオブジェクトを返すことを確認します。デバッグモードでは、クエリを展開することができます。あなたがこれをしたように聞こえるが、あなたは少し曖昧だった、あなたは右側の引数にディナー項目が含まれていると言っていたが、あなたがそれを割り当てる変数には次の行の項目が含まれていない?
  3. あなたのビューページが強く型付けされたビューから継承されていることを確認してください。例えば。 System.Web.Mvc.ViewPage<IEnumerable<NerdDinner.Models.Dinner>>
+0

問題は、DB内の日付が過去にあったことですが、私がすぐにそれを見たときの様子を私には理解できませんでした。 リファレンスDBソースに接続して作業しましたが、うまくいきましたが、レコードの半分しか表示されませんでした。 今は非常に愚かな気分です。 チュートリアルを続行すると幸いです –

0

ビューのViewDataが、渡されているディナーオブジェクトに正しく整列されていないのではないでしょうか? ViewData( "dinners")= dinnersへのView()呼び出しで渡されているディナーを切り替えてみてください。次に、UIコードを更新して、おそらく現在参照しているモデルではなく、ディナーをビューデータから引き出します。

あなたもビューコードを投稿できますか?

0

DinnersRepositoryもチェックしてください。この行の場合:

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

が空のレコードセットを返している場合は、リポジトリメソッドを(ショートカットF11)に入れて調べる必要があります。

「ディナー」にクイックウォッチを追加し、その行を歩いていくと、データがあれば間違いなく空のリストが表示されます。

+0

私はdinnerRepositoryですばやく見るとレコードセットが表示されますが、ディナーでは表示されませんが、まだ実行されていないためと思われます。 –

+0

その行に移動すると、結果ビューオプションが表示されます。そのオプションを展開すると、レコードが表示されますか? –

関連する問題