我正在使用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。对不起,如果这个问题含糊不清,我只是有点迷茫而且不确定如何从这里开始。
答案 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) {
//你的代码就在这里..
}
希望这有帮助。