当我上传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); } }