Laden...

[gelöst]ASP.NET MVC 5: Postback per $.ajax: Controller Datenübergabe immer null

Erstellt von schuppsl vor 5 Jahren Letzter Beitrag vor 5 Jahren 838 Views
S
schuppsl Themenstarter:in
789 Beiträge seit 2007
vor 5 Jahren
[gelöst]ASP.NET MVC 5: Postback per $.ajax: Controller Datenübergabe immer null

Also ich möchte per Javascript/ajax Daten an den Controller übergeben.
Das sieht so aus:

var request =
        {
            "type": "POST",
            "url": "/Home/SetPulverData",           
            "data": "[{ 'IAufNr': '1111', 'IColor': 'Col1' },{'IAufNr': '2222',  'IColor': 'Col2' }]" 
        }
        
        $.ajax(request)
        .done(function (ergebnis) {

            if (ergebnis.success == true) {


            }
               
        })
        .fail(function (errMsg) {
            console.log(errMsg);
        })

Der Controller:

 [HttpPost]
        public ActionResult SetPulverData(IEnumerable<ColModel> myAuftraege )
        {



            return Json("");

        }

Das Model sieht so aus:

 public class ColModel
    {
        public int id { get; set; }
        public string IAufNr { get; set; }
        public string IColor { get; set; }
        public string  EColor { get; set; }
        public string ESonder { get; set; }
        public string  IWagenNr { get; set; }
        public string ERueckMldNr { get; set; }

    }

myAruftraege ist immer null, da kann ich machen was ich will.
Habe schon gegoogelt und alles Mögliche ausprobiert.

Mit dem Tool "Postman" funktioniert es aber seltsamerweise.
Schaue ich mir den Ajax Request von Postman an, sieht der so aus:


var settings = {
  "async": true,
  "crossDomain": true,
  "url": "http://localhost:18577/Home/SetPulverData",
  "method": "POST",
  "headers": {
    "content-type": "application/json",
    "cache-control": "no-cache",
    "postman-token": "9ee8b4cc-7bff-3f32-0425-244ecd03f466"
  },
  "processData": false,
  "data": "[\n\n{\n\t\"IAufNr\": \"1111\",\n\t\"IColor\": \"Col1\"\n},\n{\n\t\"IAufNr\": \"2222\",\n\t\"IColor\": \"Col2\"\n}\n\n\t\n]"
}

$.ajax(settings).done(function (response) {
  console.log(response);
});

Einziger Unterschied wäre die content-type Angabe.
Gebe ich die aber in meinem Script an, macht das aber keinen Unterschied und myAuftraege ist null.

Habe auch schon die Ausgabe von Postman in mein Script kopiert, myAuftraege ist null.

Kann jemand erkennen, an welcher Stellschraube es hier noch fehlt?

16.807 Beiträge seit 2008
vor 5 Jahren

IIRC muss es eigentlich

 "data": { myAuftraege  : [{ 'IAufNr': '1111', 'IColor': 'Col1' },{'IAufNr': '2222',  'IColor': 'Col2' }] } 

lauten, ansonsten weiß MVC nicht, wie es mappen muss.

Evtl. funktioniert es per Postman, weil hier die Value implizit als String übergeben wird; in Deinem JavaScript-Code aber nun mal als object.

S
schuppsl Themenstarter:in
789 Beiträge seit 2007
vor 5 Jahren

👍 👍 👍Viiiieeeelen Dank!

Das war es wohl 👍