尝试使用带有sql数据库的foreach循环时出错

时间:2017-09-08 07:28:49

标签: c# sql-server asp.net-mvc nerddinner

我正在使用MVC,ASP.NET重新创建网站NerdDinner。我创建了一个包含晚餐,日期和其他相关信息的数据库。在我的索引视图中,我试图使用foreach循环列出所有晚餐到屏幕。我一直收到错误:

  

“foreach声明无法对'Dinner'类型的变量进行操作   因为'晚餐'不包含公共定义   '的GetEnumerator'“

List(2017-06-25T00:00, 2017-06-25T00:05:13, 2017-06-25T00:11:11, 2017-06-25T00:17:39, 2017-06-25T00:24:44, 2017-06-25T00:32:33, 2017-06-25T00:41:11, 2017-06-25T01:01:03)

我对此很陌生,不知道如何纠正这个问题,或者甚至不知道问题所在的位置。

这是项目的GitHub repo。对不起,如果这个问题含糊不清,我只是有点迷茫而且不确定如何从这里开始。

3 个答案:

答案 0 :(得分:2)

您的模型属于@model NerdDinner.Models.Dinner

类型

所以基本上你的模型不是一个列表。将模型更改为@model IEnumerable<NerdDinner.Models.Dinner>@model List<NerdDinner.Models.Dinner>可以解决您的问题

编辑:将Index.cshtml更改为

@model List<NerdDinner.Models.Dinner>

@{
ViewBag.Title = "Index";
}

<h2>Upcoming Dinners</h2>

<ul>

@foreach(var dinner in Model)
{
    <li>
        @dinner.Title
        on
        @dinner.EventDate.ToShortDateString()
        at
        @dinner.EventDate.ToShortDateString()
    </li>
}
</ul>

答案 1 :(得分:0)

@foreach(var dinner in Model.dinners)
{
    <li>
        @dinner.Title
        on
        @dinner.EventDate.ToShortDateString()
        at
        @dinner.EventDate.ToShortDateString()
    </li>
}

试试这个,您必须定义要循环的模型

答案 2 :(得分:0)

在您看来,模型必须是IEnumerable,如:

@model IEnumerable<NerdDinner.Models.Dinners>

然后您可以使用foreach,如下所示:

@foreach (var item in Model) {

//你的代码就在这里..

}

希望这有帮助。