我想让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
答案 0 :(得分:1)
我最近刚刚完成了这个教程,几乎所有工作都在运行。我会完成这些步骤。
System.Web.Mvc.ViewPage<IEnumerable<NerdDinner.Models.Dinner>>
答案 1 :(得分:0)
我想知道视图的ViewData是否与传入的dinners对象没有对齐?尝试通过View()调用将正在传入的晚餐切换到ViewData [“晚餐”] =晚餐。然后更新UI代码,将晚餐从视图数据中拉出,而不是可能正在引用的模型。
您也可以发布您的观看代码吗?
答案 2 :(得分:0)
检查你的DinnersRepository。如果这一行:
var dinners = dinnerRepository.FindUpcomingDinners()。ToList();
返回'空记录集',您应该通过步入(快捷方式F11)存储库方法来调查原因。
快速观看'晚餐'并跳过该行,如果有任何数据,你肯定会看到非空列表。