У меня есть форма, которая связывает модель и загрузку файла с помощью редактора связей по умолчанию для HttpPostedFileBase.
Это хорошо работает при использовании HTML. BeginForm (). Однако я хотел выполнить то же действие с помощью Ajax, таким образом, я заменил это Ajax. BeginForm () изменение параметров соответственно.
Модель все еще связывает правильно, однако я не могу заставить загрузку файла связывать с HttpPostedFileBase.
Это связывает модель и загрузку файла:
<% using (Html.BeginForm("MapUpdateColumns", "RepositoryAdmin", FormMethod.Post, new { id = "UpdateDataset", enctype = "multipart/form-data" })) {%>
Это только связывает модель:
<% using (Ajax.BeginForm("MapUpdateColumns", "RepositoryAdmin", new AjaxOptions { UpdateTargetId = "columnMappings" }, new { id = "UpdateDataset", enctype = "multipart/form-data" })) {%>
Действие контроллера:
public ActionResult MapUpdateColumns(DatasetViewModel model, HttpPostedFileBase sourceFile)
Это должно быть возможно, и раз так что я делаю неправильно?Спасибо.
Вы не можете загружать файлы с помощью AJAX. Один из способов добиться этого - использовать скрытый iframe, который будет имитировать вызов AJAX и выполнять фактическую загрузку файла или использовать Flash. Вот очень хороший плагин jQuery Form , использующий скрытый iframe, который способен прозрачно ajaxification при отправке формы, содержащей поля файла.