2011-03-18 90 views
0

我有一个Ajax表单,它加载了几个文件;问题是Request.Files总是空的。我找不到任何关于它的东西,所以就是这样。Ajax表单不会加载文件

<%using (Ajax.BeginForm("Edit", "Manage", FormMethod.Post, 
    new AjaxOptions{ OnComplete = "OnSaveEditSuccess" }, 
    new { enctype="multipart/form-data", id = "form_Edit", name = "form_Edit" })) 
{%> 
    /* ... */ 
    <input type="file" id="CCTranscripts_fileId" name="CCTranscripts_fileId" 
     onchange="ValidateUploadFile('CCTranscripts_file', this.value);" /> 
    /* ... */ 
<% } %> <%-- end form --%> 

回答

1

您无法使用AJAX表单上传文件。为了上传文件,您需要使用正常的Html.BeginForm。这是因为当发送AJAX请求时,multipart/form-data不再受到尊重。同样使用JavaScript,您无法访问文件内容以便将其发送到服务器。有一些插件可以让你实现这一点。例如,jquery form plugin通过生成隐藏的iframe来支持AJAX uploadsUploadify是另一个使用Flash的流行插件。

+0

我的表单处于模态对话框,所以我不能回到Html.BeginForm;整个过程就是在没有回传的情况下执行编辑。我们不使用jQuery表单,所以我会尝试一下uploadify。 – Liz 2011-03-23 11:25:17

+0

这是否意味着,如果我尝试上传带有常见表单的文件,启动使用xmlhttp的JavaScript函数并发送POST,那么我将无法执行该操作? =( – 2015-03-07 19:11:50