我想循环遍历文件,并始终确保它只是循环的数组中的一个项目
var files = Request.Form.Files;
var singleFile = files[0];
foreach (var file in singleFile)
{
}
我收到错误foreach语句无法对类型'?'的变量进行操作。因为'?'不包含' GetEnumerator'
的公开定义我该如何解决这个问题!感谢
答案 0 :(得分:3)
您无法遍历非集合类型的项目。您已将Request.Form.Files
中的第一个文件分配给变量。所以这个变量不是全部引用单个文件。
您可以使用Count
-property的HttpFileCollection
:
int fileCount = Request.Form.Files.Count;
if(fileCount > 0)
{
HttpPostedFile firstFile = Request.Form.Files[0];
// do something with it ....
}
如果你想枚举所有你可以在Request.Form.Files
上使用循环:
foreach (HttpPostedFile file in Request.Form.Files)
{
// do something with it
}
答案 1 :(得分:2)
错误很清楚。 singleItem
只是原始集合中的单个项目,而不是实际的集合。如果要检查该集合只有一个元素,请使用files.Count
:
if(files.Count != 1)
Console.WriteLine("Evil, evil");
else
{
var singleFile = files[0];
// ....
}
答案 2 :(得分:0)
试试这个,它会给出第一个收藏品。如果集合计数为0,则它将返回null
。
Request.Form.Files.FirstOrDefault()