-1
rated 0 times
[
4]
[
5]
/ answers: 1 / hits: 29355
/ 11 Years ago, tue, june 11, 2013, 12:00:00
I'm trying to upload a file using Ajax.BeginForm(), but it's not working out.
My view contains:
@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 />
}
and the corresponding Controller is:
[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.";
}
}
The problem is that it's uploading the file, but no longer doing any asynchronous posts when I remove jquery.unobtrusive-ajax.js
. Instead, it does a full post-back.
When I add jquery.unobtrusive-ajax.js
in my view, it's doing it asynchronously, but it is not sending an upload file in the form data. No file is being sent to the server in Request.Files[]
.
More From » c#