2017-05-10 1 views
0

Ich habe diesen Javascript-Code:Liste in der Steuerung von Ajax

var formData = new FormData($('#formSlip').get(0)); 
    formData.append('myList', JSON.stringify(tests)); 

Wo tests eine Liste von Objekten ist. Ich sende eine Ajax Post-Anfrage an meinen Controller und innerhalb dieser Anfrage sende ich eine Datei und eine Liste von Objekten.

$.ajax({ 
      url: url, 
      type: 'post', 
      data: formData, 
      processData: false, 
      contentType: false, 
      cache: false, 
      success://some code 
     }) 

Ich habe habe einen Blick in meine Request PayloadDevTools in Chrome, und es sieht wie folgt aus:

Content-Disposition: form-data; name="firstPdf"; filename="blank.pdf" 
    Content-Type: application/pdf 

    Content-Disposition: form-data; name="myList" 

    [{"key":"Section1","listTitles":["aaaa","aa","aa","a"]}, 
    {"key":"Section2","listTitles":["bb","b","bb","b"]}] 

ich die Datei in Ordnung in meinem Controller-Aktion bin abrufen, aber aus irgendeinem Grund die Liste immer leer ist, das ist mein Controller-Aktion:

[HttpPost] 
    public ActionResult LS10(HttpPostedFileBase firstPdf, List<PdfPieceVM> myList) 
    {    
     var t = firstPdf.InputStream;   
     byte[] pdfByte = new byte[firstPdf.ContentLength]; 
     return File(pdfByte, "application/pdf", firstPdf.FileName); 
    } 

ich ein Ansichtsmodell erstellt haben gerade diese Liste zu erhalten:

Wenn ich meinen Code debuggen der myList Parameter ist immer leer, aber ich empfange die Datei, was muss ich tun, um dies zu korrigieren?

+1

Sind Sie in diesem Beitrag sah noch: http: // Stackoverflow com/questions/13242414/passing-a-list-of-objects-in-ein-mvc-controller-methode-using-jquery-ajax - Sieht aus wie contentType ist erforderlich. –

Antwort

0

Lesen @ Alex Menconi Post verwiesen, änderte ich die Controller-Aktion eine Zeichenfolge abrufen und dann auf den Typ deserialisiert, die ich wollte:

[HttpPost] 
     public ActionResult LS10(HttpPostedFileBase firstPdf, string myList) 
     { 
      List<PdfPieceVM> pdfPieces = new 
     JavaScriptSerializer().Deserialize<List<PdfPieceVM>>(myList);    
     } 
Verwandte Themen