Ajax.BegineForm () работает с данными многоэлементной формы, и вот пример рабочего кода для того же:
Вид:
@using(Ajax.BeginForm("UploadFile","MyPOC",
new AjaxOptions {
HttpMethod = "POST"
},
new
{
enctype = "multipart/form-data"
}))
{
<input type="file" name="files" id="fileUploaderControl" />
<input type="submit" value="Upload" id="btnFileUpload" />
}
Метод действия контроллера:
public void UploadFile(IEnumerable<HttpPostedFileBase> files)
{
HttpPostedFileBase file = files.FirstOrDefault(); //Attach a debugger here and check whether you are getting your file on server side or null.
if (file != null && file.ContentLength > 0)
{
//Do other validations before saving the file
//Save File
file.SaveAs(path);
}
}
P.S. Убедитесь, что атрибут «name» элемента управления загрузки файлов и имя параметра, переданного в метод действия UploadFile (), должны быть одинаковыми (то есть «файлы» в данном случае).