Поскольку вы не можете загружать файлы с помощью AJAX, я бы порекомендовал вам отличный плагин jquery form , который позволяет вам изменять форму и поддерживает загрузки файлов .За кулисами плагин генерирует скрытый iframe для обработки загрузки и полностью прозрачен для вас:
<form id="myForm" action="/home/upload" method="post" enctype="multipart/form-data">
<input type="file" name="file" id="file" />
<input type="submit" value="upload" />
</form>
Контроллер:
[HttpPost]
public ActionResult Upload(HttpPostedFileBase file)
{
// TODO: handle the file here
return PartialView("success");
}
И, наконец, откорректируйте форму:
$(function() {
$('#myForm').ajaxForm(function(result) {
alert('thank you for uploading');
});
});
Также обратите внимание на использование HttpPostedFileBase
вместо HttpPostedFile
в действии контроллера.Будучи абстрактным классом, это упростит ваши юнит-тесты.