当我上传0个文件时,为什么IEnumerable count为1?

我有一个多上传表单,我想在启动上传时检查是否有任何文件。 这是我的代码。

查看:

@using (Html.BeginForm("Upload", "Home", FormMethod.Post, new { enctype = "multipart/form-data"})) {   } 

控制器:

 [HttpPost] public ActionResult Upload(IEnumerable files) { if (files.Count() > 0) Console.WriteLine(files.Count()); // display 1 if(files.Any()) Console.WriteLine(files.Any()); // display true if (files.First() == null) Console.WriteLine("first null"); // display "first null" return View(); } 

当我提交空表单时,为什么我的程序会显示结果? 我可能会检查JS我的字段,但我想了解我的IEnumerable这些数据是什么。 谢谢。

虽然我对派对来说有点迟,但仍然。 我有同样的问题。 在asp.net上发现了一篇文章他们说它的设计。 http://aspnetwebstack.codeplex.com/workitem/188

这是设计使然,因为请求包含具有filename =“”的段。 如果您不想创建该文件,请从请求中删除该段。 我通过以下方式修复它。

  if (RelatedFiles.Any()) { foreach (var file in RelatedFiles) { if (file != null) // here is just check for a null value. { byte[] uploadedFile = new byte[file.InputStream.Length]; file.InputStream.Read(uploadedFile, 0, file.ContentLength); FileInfo fi = new FileInfo(file.FileName); var upload = new UploadedFile { ContentType = file.ContentType, Content = uploadedFile, FileName = fi.Name, ContentExtension = fi.Extension, }; newIssuePaper.RelatedDocuments.Add(upload); } }