书呆子晚餐,可能是一个极端的菜鸟问题,列出晚餐

时间:2009-06-24 00:06:28

标签: asp.net-mvc list

我想让NerdDinner工作,并且遇到一些麻烦。

我快速观察了actionResult for index发生的位置,并看到来自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     {         private NerdDinnerDataContext db = new 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

3 个答案:

答案 0 :(得分:1)

我最近刚刚完成了这个教程,几乎所有工作都在运行。我会完成这些步骤。

  1. (显而易见)检查数据库中是否有要抓取的数据。
  2. 检查您的DinnerRepository是否正在返回所有晚餐的IQueryable对象,调试模式应该允许您扩展查询。这听起来像你这样做但你有点模糊,你说右边的参数包含晚餐项目,但你分配给它的变量不包含下一行的项目?
  3. 确保您的视图继承自强类型视图。例如。 System.Web.Mvc.ViewPage<IEnumerable<NerdDinner.Models.Dinner>>

答案 1 :(得分:0)

我想知道视图的ViewData是否与传入的dinners对象没有对齐?尝试通过View()调用将正在传入的晚餐切换到ViewData [“晚餐”] =晚餐。然后更新UI代码,将晚餐从视图数据中拉出,而不是可能正在引用的模型。

您也可以发布您的观看代码吗?

答案 2 :(得分:0)

检查你的DinnersRepository。如果这一行:

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

返回'空记录集',您应该通过步入(快捷方式F11)存储库方法来调查原因。

快速观看'晚餐'并跳过该行,如果有任何数据,你肯定会看到非空列表。