Отправка файла и списка в контроллер MVC с помощью FormData MVC - PullRequest
0 голосов
/ 10 мая 2019

Я пытаюсь отправить файл и список на контроллер MVC, используя FormData, но список кажется пустым при попадании на контроллер.

Данные формы:

 var formData = new FormData();

                formData.append("AttachedFile", files[0]);
                formData.append("Items", invoice.serialize());
                formData.append("CustomerId", 1);
                formData.append("RevenueHeadId", demandNoteObject.RevenueHeadId);

Модель:

  public int CustomerId { get; set; }
    public int RevenueHeadId { get; set; }
    [DataType(DataType.Upload)]
    public HttpPostedFileBase AttachedFile { get; set; }
    public List<Items> Items { get; set; }

Контроллер:

[HttpPost]
    public ActionResult Create(InvoiceCreateModel model)

JQuery:

  $.ajax({
                    type: "POST",
                    url: "@Url.Action("Create", "")",
                    datatype: "Json",
                    data: formData,
                    cache: false,
                    contentType: false,
                    processData: false,
                    success: function (data) {

1 Ответ

1 голос
/ 10 мая 2019
 $.ajax({
            type: 'POST',
            url: '@Url.Action("Create", "yourControllerName")',
            data: formData,
            contentType: false,
            processData: false,
            success: function (data) { ...}
        });

попробуйте это

Редактировать Поскольку элементы представляют собой набор объектов, вы должны добавить каждый из них с индексом

var index = 0;
for(var item of invoice){
    var pair = item[key];
    formData.append("Items[" + index + "].yourField", pair.yourField);
    index++;
}
...