由于“”不包含“ GetEnumerator”的公共定义,因此foreach语句获取错误无法对类型为“”的变量进行操作

use*_*331 2 c# asp.net asp.net-mvc razor

我的剃须刀视图中出现错误:

foreach语句无法对'Project.Model.ResultsClass'类型的变量进行操作,因为'Project.Model.ResultsClass'不包含'GetEnumerator'的公共定义

这是我的foreach定义方式Model

@model Project.Models.ResultsClass

@foreach (var item in Model) {
}
Run Code Online (Sandbox Code Playgroud)

这是控制器方法:

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);
}
Run Code Online (Sandbox Code Playgroud)

这是我的课:

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; }
}
Run Code Online (Sandbox Code Playgroud)

我不明白我在做什么错?

Sal*_*ari 5

您已传递了resultResultsClass不是的集合的类型ResultsClass,然后尝试对其进行迭代,就好像它是一个集合一样,因此您无法在foreach循环中使用它。因此,为了能够使用foreach它,您必须将其设为一个集合。例如,foreach如果您通过results而不是result

return View(results);

@model List<Project.Models.ResultsClass>

@foreach (var item in Model) {
}
Run Code Online (Sandbox Code Playgroud)