【问题标题】:Nerd dinner, possibly an extreme noob question, list dinners书呆子晚餐,可能是一个极端的菜鸟问题,列出晚餐
【发布时间】:2009-08-01 04:00:00
【问题描述】:

我正在尝试让NerdDinner 工作,但遇到了一些麻烦。

我快速观察了 index 的 actionResult 发生的地方,发现来​​自dinnerRepository 的项目位于赋值运算符的右侧。

但是,当我单步执行代码的下一行时,传递给视图的晚餐似乎不包含记录集。

谁能指出我哪里出错了。

结果页面完美呈现,但没有显示记录。

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

【问题讨论】:

  • 可能是因为您使用的是“DinnerRepository”而不是“DinerRepository”:)
  • 我非常非常尴尬,代码没有任何问题。这与数据库中的数据有关。感谢您的支持

标签: asp.net-mvc list


【解决方案1】:

我最近刚刚完成了那个教程,几乎所有的东西都能正常工作。我会逐步完成这些步骤。

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

【讨论】:

  • 问题是数据库中的日期是过去的,但是当我快速查看它时,我觉得它们在那里的样子是没有意义的。当我将它连接到参考数据库源时,我解决了它,它有效,但只显示了大约一半的记录!现在觉得很傻。但很高兴继续学习本教程
【解决方案2】:

我想知道视图的 ViewData 是否与传入的晚餐对象未正确对齐?尝试将通过 View() 调用传入的晚餐切换到 ViewData["dinners"] = Dinners.然后更新 UI 代码以将晚餐从视图数据中提取出来,而不是从当前可能引用的模型中提取出来。

您也可以发布您的视图代码吗?

【讨论】:

    【解决方案3】:

    也检查您的 DinnersRepository。如果这一行:

    var Dinners = DinnerRepository.FindUpcomingDinners().ToList();

    返回的是“空记录集”,您应该通过单步执行(快捷键 F11)存储库方法来调查原因。

    在“晚餐”上添加一个快速观看并越过该行,如果有任何数据,您肯定会看到一个非空列表。

    【讨论】:

    • 当我在dinnerRepository 上快速查看时,我看到了记录集,但我在晚餐上没有看到它,但我可以假设这是因为该语句尚未运行。
    • 如果你走到那一行,应该有一个结果视图选项,当你展开该选项时,你会看到任何记录吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-25
    • 2011-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多