2016-04-21 1 views
0

Ich habe eine Modellklasse wie unten:Wie eine Liste einer Klasse in ein Modell von AJAX Post Call MVC übergeben?

public class clsUser 
{ 
    public string FirstName{ get; set; } 
    public String username { get; set; } 
    public String password { get; set; } 
    public List<ContactNumbers> Cnumbers{ get; set; } 
} 

Jetzt i Ajax-Request mit oben Modell senden möchten. Ich habe versucht, mit dem folgenden Code gleich zu tun:

var dd = 
    { 

    "FirstName": "ABC", 
    "username": "abc123", 
    "password": "[email protected]", 
    "Cnumbers[0].Home":"0987654321", 
    "Cnumbers[1].Company":"7654321" 
    } 

    var objInsertUser= JSON.stringify(dd); 
    var URLValue = "http://localhost:47083/api/TestAPI/insertUser"; 
    $.ajax({ 
     type: "POST", 
     url: URLValue, 
     data: objInsertUser, 
     contentType: "application/json", 
     success: function (data) { 
      alert(data); 
     } 

    }); 

Aber dies immer „Cnumbers“ als null sendet. i immer bin nicht warum ..

Wenn ich in der falschen Art und Weise tue Experten mir die richtige Art und Weise sagen könnten ..

Dank im Voraus.

+0

Haben Sie versucht, das Ajax-Attribut dataType: 'json' zu setzen? – user2278120

+0

Ihr Array bindet sich gut, wenn Sie 'contentType:" application/json "entfernen und' data: dd' verwenden (dont stringfy) –

Antwort

3

Sie müssen den richtigen JSON erstellen. Sie benötigen ein Array zu erstellen, für Cnumbers

var dd = { 
    "FirstName": "ABC", 
    "username": "abc123", 
    "password": "[email protected]", 
    "Cnumbers": [{ 
     "Home": "0987654321" 
    }, { 
     "Company": "7654321" 
    }] 
} 
+0

Fügen Sie den stringify-Wrapper hinzu und fügen Sie die URL um Daten: JSON.Stringify (objInsertUser), speichert die zusätzlichen Zeilen. – War

+0

@wadry, Ja, Sie sind richtig, aber das ist nicht der Problembereich so ignoriert. – Satpal

+1

@Satpal yo Mann hat es funktioniert .. !!!! vielen Dank –

0

Das Problem höchstwahrscheinlich in var objInsertUser= JSON.stringify(dd); liegt. Ihr Objekt ist bereits JSON, Sie müssen es also nicht fixieren. data: dd, sollte ausreichen. Wenn Sie bereits vorhandenes JSON mit einem String versehen, erhalten Sie Standardwerte für die Parameter, und alle nicht-primitiven Elemente sind standardmäßig null.

Auch as noted, Ihre JSON ist falsch. Einige Leute, wenn sie mit einem Problem konfrontiert sind, denken "Ich weiß, ich werde JSON verwenden. Jetzt haben Sie zwei Probleme" XD. Also, zusammenfassend: Verwenden Sie die richtige JSON und nicht JSON.Stringify bestehenden JSON.

+0

Dies beantwortet nicht wirklich die Frage. –

Verwandte Themen