Asp.net 使用foreach循环时文件上载错误&引用;。。。不包含对';GetEnumerator'&引用;

Asp.net 使用foreach循环时文件上载错误&引用;。。。不包含对';GetEnumerator'&引用;,asp.net,asp.net-mvc-3,foreach,Asp.net,Asp.net Mvc 3,Foreach,我正在尝试让一个文件上传器工作。我正在学习教程“”,但我没有使用,因为我时间紧迫,而且我对ASP.NET MVC还比较陌生 当我使用提供的示例代码时(进行了一些小的修改以适应上下文中的差异),我在runtine中得到了以下错误: 编译器错误消息:CS1579:foreach语句无法对“AnswerApp.Models.ViewDataUploadFileResult”类型的变量进行操作,因为“AnswerApp.Models.ViewDataUploadFileResult”不包含“GetEnu

我正在尝试让一个文件上传器工作。我正在学习教程“”,但我没有使用,因为我时间紧迫,而且我对ASP.NET MVC还比较陌生

当我使用提供的示例代码时(进行了一些小的修改以适应上下文中的差异),我在runtine中得到了以下错误:

编译器错误消息:CS1579:foreach语句无法对“AnswerApp.Models.ViewDataUploadFileResult”类型的变量进行操作,因为“AnswerApp.Models.ViewDataUploadFileResult”不包含“GetEnumerator”的公共定义

有人建议使用强制转换并将变量var声明为IEnumerable,但没有一个对我有效。我花了好几天的时间研究这个问题,甚至尝试编写自己的枚举器,但即使在这种情况下,编译器也看不到我的GetEnumerator函数

在我的控制器中:

    public ActionResult ViewAnswer(ViewDataUploadFilesResult model)
    {
        List<ViewDataUploadFilesResult> r = new List<ViewDataUploadFilesResult>();

        foreach (string file in Request.Files)
        {
            HttpPostedFileBase hpf = Request.Files[file] as HttpPostedFileBase;
            if (hpf.ContentLength == 0)
                continue;
            string savedFileName = Path.Combine(
                AppDomain.CurrentDomain.BaseDirectory,
                Path.GetFileName(hpf.FileName));
            hpf.SaveAs(savedFileName);

            r.Add(new ViewDataUploadFilesResult()
            {
                Name = savedFileName,
                Length = hpf.ContentLength
            });
        }
        return View(model);
    }
我认为:

<ul>
<% foreach (AnswerApp.Models.ViewDataUploadFilesResult v in this.ViewData.Model)  { %>
       <%=String.Format("<li>Uploaded: {0} totalling {1} bytes.</li>",v.Name,v.Length) %>
<%   } %>
</ul>

我应该创建自己的枚举器吗?如果是的话,我该怎么做呢。另外,如何使foreach循环能够识别它(当前创建GetEnumerator方法仍然会导致sam错误;因此,即使它确实存在,
foreach
循环也无法识别它。

您需要将视图绑定到ViewDataUploadFileResult的IEnumerable,而不是ViewDataUploadFileResult:

IEnumerable<ViewDataUploadFilesResult>
您的ViewAnswer操作不应该接受任何参数,除非您希望人们将参数传递给您的例程

IEnumerable<ViewDataUploadFilesResult>
View(r);