gpt4 book ai didi

asp.net - 使用 foreach 循环的文件上传错误。 "...does not contain a public definition for ' 获取枚举器'"

转载 作者:行者123 更新时间:2023-12-04 06:11:20 26 4
gpt4 key购买 nike

我正在尝试让文件上传器工作。我正在关注教程“A Back To Basics Case Study: Implementing HTTP File Upload with ASP.NET MVC including Tests and Mocks”,但我没有使用 TDD因为我时间紧迫,而且我对 ASP.NET MVC 还比较陌生。

当我使用提供的示例代码(稍作修改以调整上下文差异)时,我在运行时收到以下错误:

Compiler Error Message: CS1579: foreach statement cannot operate on variables of type 'AnswerApp.Models.ViewDataUploadFilesResult' because 'AnswerApp.Models.ViewDataUploadFilesResult' does not contain a public definition for 'GetEnumerator'



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

在我的 Controller 中:
    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);
}

在我的模型中:
public class ViewDataUploadFilesResult
{
public string Name { get; set; }
public int Length { get; set; }
}

在我看来:
<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 循环也是不可见的。

最佳答案

您需要将 View 绑定(bind)到 ViewDataUploadFilesResult 的 IEnumerable 而不是 ViewDataUploadFilesResult:

IEnumerable<ViewDataUploadFilesResult>

然后在您的操作中,您在列表上而不是在一个结果上调用 View:
View(r);

除非您希望人们将参数传递给您的例程,否则您的 ViewAnswer 操作不应接受任何参数。

关于asp.net - 使用 foreach 循环的文件上传错误。 "...does not contain a public definition for ' 获取枚举器'",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7733381/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com