我的剃须刀视图中出现错误:
foreach语句不能对类型的变量进行操作 ' Project.Model.ResultsClass'因为' Project.Model.ResultsClass'不 不包含' GetEnumerator'
的公开定义
以下是我的foreach
以及我如何定义Model
@model Project.Models.ResultsClass
@foreach (var item in Model) {
}
这是控制器方法:
public ActionResult Results()
{
var results = db.Data.SqlQuery("SELECT * FROM Results").ToList();
ResultsClass result = new ResultsClass();
result.previewID = results[0].id;
result.dateSlot = results[0].dateSlot;
result.timeSlot = results[0].timeSlot;
result.startTime = results[0].startTime;
result.dateCreated = results[0].dateCreated;
return View(result);
}
这是我的班级:
public class ResultsClass
{
[DisplayName("Preview ID")]
public int previewID { get; set; }
[DisplayName("Date")]
public string dateSlot { get; set; }
[DisplayName("Time")]
public string timeSlot { get; set; }
[DisplayName("Start Time")]
public DateTime startTime { get; set; }
[DisplayName("Completed Time")]
public DateTime dateCreated { get; set; }
}
我不明白我做错了什么?
答案 0 :(得分:2)
您已经传递了result
ResultsClass
,而不是ResultsClass
的集合,然后尝试迭代它,就好像它是一个集合所以你无法在foreach
循环中使用它。因此,为了能够在其上使用foreach
,您必须将其设为集合。例如,如果您通过foreach
而不是results
,则result
循环有效:
return View(results);
@model List<Project.Models.ResultsClass>
@foreach (var item in Model) {
}
答案 1 :(得分:0)
这是因为您的模型不是集合。这是一个对象。如果你想迭代它,它必须是一个像数组或列表的集合。
试试这个:
@model Project.Models.ResultsClass
@foreach (var item in Model.result) {
}
答案 2 :(得分:0)
这条线是罪魁祸首:
@model Project.Models.ResultsClass
如果您想要将列表(集合)返回到视图,那么该行会导致控制器操作出现问题。
基本上在视图中,该行意味着您要显示1 ResultsClass
个对象..而不是ResultsClass
个对象的集合,因此您不能仅仅迭代1 {{1} {{ 1}}对象。
但就目前而言,您只需调用要返回视图的ResultsClass
对象的属性即可解决该问题。
ResultsClass
或
只需在控制器操作中传递@model Project.Models.ResultsClass
@Html.DisplayFor(modelItem => item.previewID)
@Html.DisplayFor(modelItem => item.dateSlot)
@Html.DisplayFor(modelItem => item.timeSlot)
@Html.DisplayFor(modelItem => item.startTime)
@Html.DisplayFor(modelItem => item.dateCreated)
对象:
results
然后在你看来:
public ActionResult Results()
{
var results = db.Data.SqlQuery("SELECT * FROM Results").ToList();
return View(results);
}
如果有帮助,请告诉我。