我正在尝试使用 Ajax.BeginForm() 上传文件,但没有成功。
我的观点包含:
@using (Ajax.BeginForm("UploadFile", null, new AjaxOptions { HttpMethod="POST", UpdateTargetId = "result" }, new { enctype = "multipart/form-data" }))
{
<label id="lblUploadNewFile" for="fileUploadControl">Upload New File</label>
<input type="file" name="fileToUpload" id="fileUploadControl"/>
<input id="btnFileUpload" type="submit" value="Upload" />
<span id="result" />
}
对应的Controller是:
[HttpPost]
public string UploadFile(FormCollection formData)
{
HttpPostedFileBase file=null;
try
{
file = Request.Files[0];
}
catch { }
if ( file!=null && file.ContentLength > 0)
{
file.SaveAs(string.Concat(
AppDomain.CurrentDomain.BaseDirectory,
Path.GetFileName(file.FileName)));
return "Successfully Uploaded";
}
else
{
return "Upload Failed, please try again.";
}
}
问题是它正在上传文件,但是当我删除时不再做任何异步帖子jquery.unobtrusive-ajax.js
。相反,它会进行完整的回发。
当我jquery.unobtrusive-ajax.js
在我的视图中添加时,它是异步执行的,但它不会在表单数据中发送上传文件。中没有文件被发送到服务器Request.Files[]
。