2016-05-12 7 views
-1

Ich versuche, Liste an Controller-Methode mit Ajax übergeben. Beispiel Ich bin 2 Objekte in der Liste wie unten. Ich erhalte zwei Objekte in der Steuerung, aber innerhalb Eigenschaften sind nullÜbergabe Liste der Objekte in der Steuerung mit Ajax Anruf

var dataObject = { 'sections': sectionsOrder}; 
     console.log(dataObject); 
    CustomAjaxRequest("Post", "@Url.Action("UpdateOrderHoldingsForSections", "Renewal")" , 
     dataObject, "json", "UpdateSectionsViewWithLatestOrderHoldings", 
       null, true); 


    [HttpPost] 
    public ActionResult UpdateOrderHoldingsForSections(List<OrderHoldings> sections) 
    { 
     return null; 
    } 

noch habe ich versucht, var dataObject = { 'sections': json.stringify(sectionsOrder)}; noch nichts arbeiten. Was könnte das Problem sein?

In-Konsole, bevor er Werte

enter image description here enter image description here

enter image description here

+0

Ohne das vollständige Modell (in js und in C#) ist es sehr schwer zu sagen, was passiert, fügen Sie es in den Code. – Gusman

+0

Was ist Ihre 'CustomAjaxRequest()' Methode? Ihre Ajax-Optionen müssen 'data: JSON.stringify (dataObject),' und 'contentType: 'application/json; charset = utf-8 ', ' –

Antwort

0

Ihr Controller eine Liste erwartet, aber Sie sind vorbei, ein Objekt mit einer Eigenschaft auf, die eine Liste ist. Versuchen Sie, das Array direkt zu senden, sollten sie map

CustomAjaxRequest("Post", "@Url.Action("UpdateOrderHoldingsForSections", "Renewal")" , 
    sectionsOrder, "json", "UpdateSectionsViewWithLatestOrderHoldings", 
      null, true); 

zur Liste Oder Sie könnten stattdessen eine C# Bindungsmodell hinzufügen, die eine Eigenschaft hat public List<OrderHoldings> Sections { get; set; }

0

Hier ist, wie ich tun würde:

var jsonData = JSON.stringify(sectionsOrder);    
var dataObject = { sections: jsonData };    
CustomAjaxRequest("Post", "@Url.Action("UpdateOrderHoldingsForSections", "Renewal")" , dataObject, "json", "UpdateSectionsViewWithLatestOrderHoldings", null, true); 

und dann in der Steuerung,

[HttpPost] 
    public ActionResult UpdateOrderHoldingsForSections(string sections) 
    { 
     List<OrderHoldings> sectionsHoldings; 
     JavaScriptSerializer seriliazer = new JavaScriptSerializer(); 
     sectionsHoldings = seriliazer.Deserialize<List<OrderHoldings>>(sections); 
     . 
     . 
     . 
    } 

und ja, stellen Sie sicher, dass Sie akzeptieren str sind in der Steuerung wie oben gesehen und nicht Liste

+0

Sie umgehen die Modellbindung dort vollständig und hätten daher keinen der Vorteile der Modellvalidierung – simonlchilds

Verwandte Themen