Как сделать запись формы ASP.NET MVC Ajax с multipart / form-data? - PullRequest
22 голосов
/ 24 февраля 2009

Я работаю над веб-сайтом ASP.NET MVC, который имеет форму, позволяющую загружать файлы, используя опцию многоточечного / формального ввода данных в теге формы, например:

<form enctype="multipart/form-data" method="post" action='<%= Url.Action("Post","Entries",new {id=ViewData.Model.MemberDetermination.DeterminationMemberID})  %>'>

Как бы я написал это, чтобы вместо этого сделать пост формы ASP.NET MVC Ajax?

Ответы [ 12 ]

0 голосов
/ 29 июня 2016

Из моего небольшого расследования. Все ответы, приведенные выше, кажутся правильными, в зависимости от проблемы, с которой сталкивается Ajax.BeginForm. Однако я только что заметил, что проблема в некоторых случаях связана с библиотекой javascript ~ / Scripts / jquery.unobtrusive-ajax.min.js. Так что в моем случае я просто удалил его из модели представления и решил использовать плагин JQuery Form для своих нужд вместе с HTML-формой. Это было предложено выше.

0 голосов
/ 16 февраля 2016

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 (), должны быть одинаковыми (то есть «файлы» в данном случае).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...