Я работаю над MVC project.I имеют форму, как показано ниже:Отправка HttpPostedFileBase поле с помощью JQuery AJAX form.serialize() в MVC
<div id="horizontal-form">
@using (Html.BeginForm("Send", "Ticket", FormMethod.Post, new
{
@class = "form-horizontal",
role = "form",
id = "form_send_ticket",
enctype = "multipart/form-data"
}))
{
@**** I have about 20 filed's of other types here ****@
......
@**** Image file ****@
@Html.TextBoxFor(x => x.Image, new { type = "file" })
<div>
<button type="button" class="btn btn-success" id="send_ticket">Insert</button>
</div>
}
</div>
Мой ViewModel:
public class SendViewModel
{
//I have about 20 filed's of other types here
.....
//Image file
public HttpPostedFileBase Image { get; set; }
}
Мои JQuery Ajax:
$("#send_ticket").click(function() {
var form = $("#form_send_ticket");
$.ajax({
type: "POST",
url: '@Url.Action("Send", "Ticket")',
data: form.serialize(),
contentType: "multipart/form-data",
success: function (data) {
//do something
},
error: function (e) {
//do something
}
});
})
My Controller Действие выглядит так:
До этого я столкнулся, я имею в виду в других проектах, в основном у меня было примерно от 3 до 8 полей, включая графический файл, некоторые другие типы, и я добавляю их один за другим в FormData
(из-за этого файла изображения), затем отправьте они через запрос ajax, и это было для меня неважно, но теперь у меня около 22 полей, и это немного, но для этого. Я решил сериализовать форму и отправить ее с помощью запроса ajax, и он работает в хорошей форме, все записано, кроме изображения который я делаю его типом HttpPostedFileBase
в ViewModel. Любая идея, как отправить это поле в форме с помощью data: form.serialize()
?
ценит вашу помощь :)
Update: позвольте мне прояснить некоторый Пункт:
1-я не хочу FormData
отправить через AJAX, и я хочу, чтобы отправить с помощью form.serialize()
.
2-Не хотите использовать готовые плагины файлов.
3-я не имею в виду только одно поле изображения, я имею в виду всю форму с 23 полями.
Возможный дубликат [Как загрузить файлы асинхронно?] (Http://stackoverflow.com/questions/166221/how-can-i-upload-files-asynchronously) – pwas
Пожалуйста, прочитайте весь вопрос. Как и вы при условии, что они использовали FormData для отправки через ajax, и я хочу отправить с помощью form.serialize(), они предложили некоторые готовые файлы плагинов и захотят, они указали только одно поле изображения и означают всю форму. –
См. [Этот ответ] (http://stackoverflow.com/questions/29293637/how-to-append-whole-set-of-model-to-formdata-and-obtain-it-in-mvc/29293681#29293681) - его просто «var formdata = new FormData ($ ('form'). get (0));' для сериализации всей формы, включая входные файлы, - вам не нужно добавлять их по одному. –