Asp.net mvc ASP.Net MVC中的文件上载遇到以前的错误时,Request.File.Count仍设置为1

Asp.net mvc ASP.Net MVC中的文件上载遇到以前的错误时,Request.File.Count仍设置为1,asp.net-mvc,file-upload,Asp.net Mvc,File Upload,我正在ASP.NETMVC中开发一个表单,其中包含一个,它在表单中不是必需的 在我的控制器中,我有以下代码: [AcceptVerbs(HttpVerbs.Post)] [ValidateInput(false)] public ActionResult Create(FormCollection collection) { ... //get uploaded file if (Request.Files.Count > 0)

我正在ASP.NETMVC中开发一个表单,其中包含一个
,它在表单中不是必需的

在我的控制器中,我有以下代码:

[AcceptVerbs(HttpVerbs.Post)]
[ValidateInput(false)]
public ActionResult Create(FormCollection collection) {
        ...

        //get uploaded file
        if (Request.Files.Count > 0)
        {
            file = Request.Files["imgFileUpload"];
            if (file.ContentLength == 0)
            {
                throw new InvalidOperationException("File contents are empty");
            }
            ...
        } 
        ...
}
现在,当用户上传一个没有内容的文件时,表单会引发一个异常并向用户提示——这是意料之中的

现在,如果用户决定不再上传任何文件并单击submit按钮,那么之前的异常仍然会显示,这相当奇怪

我尝试检查
Request.Files
的值,发现其计数仍然设置为1。。。它仍然认为那里有一个文件,因为用户没有在
控件上放置任何文件

有人遇到过这种情况吗?如果是,您采取了哪些步骤来防止再次执行上一个异常


非常感谢你

刚刚找到了解决这个问题的方法。我所做的是我需要检查输入文件控制器上是否有任何值。如果有,则上载文件,否则保持原样


我刚刚在一个类似的场景中遇到了相同的问题,我做了以下操作来修复它:

 if(Request.Files.Count >  0)
 {
     if(Request.Files[0].ContentLength > 0)
     {
         //Upload the file... 
     }
 }