Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Getting error foreach语句无法对类型为'';因为'';不包含对';GetEnumerator';_C#_Asp.net_Asp.net Mvc_Razor - Fatal编程技术网

C# Getting error foreach语句无法对类型为'';因为'';不包含对';GetEnumerator';

C# Getting error foreach语句无法对类型为'';因为'';不包含对';GetEnumerator';,c#,asp.net,asp.net-mvc,razor,C#,Asp.net,Asp.net Mvc,Razor,我的razor视图中出现了一个错误: foreach语句无法对类型为的变量进行操作 “Project.Model.resultClass”是因为“Project.Model.resultClass”是 不包含“GetEnumerator”的公共定义 这是我的foreach以及我如何定义模型 @model Project.Models.ResultsClass @foreach (var item in Model) { } 以下是控制器方法: public ActionResult Resu

我的razor视图中出现了一个错误:

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

这是我的
foreach
以及我如何定义
模型

@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; }
}

我不明白我做错了什么?

您已经传递了
结果
,它是
结果类
的一种类型,不是
结果类
的集合,然后尝试将其作为一个集合进行迭代,这样您就无法在
foreach
循环中使用它。所以,为了能够在上面使用,你必须把它做成一个集合。例如,如果您要传递
结果而不是
结果,则您的
foreach
循环可以工作:

return View(results);

@model List<Project.Models.ResultsClass>

@foreach (var item in Model) {
}
返回视图(结果);
@模型列表
@foreach(模型中的var项目){
}

这是因为您的模型不是集合。它是一个物体。如果要迭代某个对象,它必须是数组或列表之类的集合

试试这个:

@model Project.Models.ResultsClass

@foreach (var item in Model.result) {
}

这条线就是罪魁祸首:

@model Project.Models.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)
基本上在视图中,这一行表示您希望显示1
resultclass
object。。不是
resultclass
对象的集合,因此不能仅迭代1个
resultclass
对象

但是现在,您可以通过调用返回视图的
resultclass
对象的属性来解决这个问题

@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)

只需在控制器操作中传递
结果
对象:

public ActionResult Results()
{
    var results = db.Data.SqlQuery("SELECT * FROM Results").ToList();
    return View(results);
}
那么在你看来,

@model IEnumerable<Project.Models.ResultsClass>

@foreach (var item in Model) {
    // .. display properties
}
@model IEnumerable
@foreach(模型中的var项目){
//…显示属性
}

如果有帮助,请告诉我。

您的视图被强类型化为
ResultClass
的单个实例。不是收藏。如果你没有传递一个集合,为什么要循环?啊,我明白了。所以我需要将变量结果传递给我的视图,这样我就可以循环它了?是的。返回视图(结果)并将视图更改为具有
resultClass
的集合,为什么希望能够在单个对象上循环?你认为这会产生什么样的行为?啊,我明白了。所以我需要将变量结果传递给我的视图,这样我就可以循环通过它了?啊,我明白了。所以我需要把变量结果传递给我的视图,这样我就可以循环它了?听起来这就是你想要做的。否则,您可以保持原样,将循环更改为@foreach(Model.result中的var项){}您可以显示一些代码来更好地定义您的答案吗。