2017-11-20 2 views
1

Daten an die Steuerung in Backend gesendet Ich möchte das Array im Backend customparameters von meinem Angular 4 Frontend für meine ASP.NET MVC Controller senden.Angular/MVC:

Ich erhalte das Array in meinem ng-service.ts und möchte es an das Backend wie folgt an:

setCustomParameters(customparameters) { 
    console.log(customparameters); //it's working 

    this.http.post('/api/customparameter', customparameters). //is that right? 
     subscribe(); 
    } 

Aber ich bin nicht sicher, ob dies alles, was ich zu tun habe. Auf der anderen Seite kann ich nicht über Google finden, wie ich meine Controller-Methode im Backend schreiben muß:

// POST: api/customparameter 
    [HttpPost] 
    public void Post([FromBody]string value) //how to change? 
    { 
    //doing something 
    } 

Hoffentlich jemand Zeit und Lust, mir zu helfen hat. Danke in Vorwärts!

+0

Sie müssen ein Ansichtsmodell basierend auf den benutzerdefinierten Parametern erstellen. Könnten Sie die Ausgabe von 'console.log (customparameters);'? – Win

+0

haben Sie alle '[Form ...]' Attribute versucht? oder Sie können den Anforderungstyp manuell auf json setzen –

+0

In 'public void Post ([FromBody] Zeichenfolgenwert)' die Zeichenfolge ist nicht richtig. Es spielt keine Rolle, dass Sie Ihr Ergebnis mit '[FromBody]' oder '[FromForm]' erhalten, weil es nur den Seitencode ** javascript ** ändert. Wenn der 'customeparameter' ein _specification_ _model_ hat, können Sie ein Klassenmodell in ** backend ** erstellen und ** string ** damit ersetzen. Ich schlage vor, ** Json ** anstelle von ** Array ** an deinen ** Controller ** zu übergeben, weil es einfach zu handhaben war. –

Antwort

0
setCustomParameters(customparameters) { 
    console.log(customparameters); //it's working 

    // Converting to json 
    var json = JSON.parse(customparameters); 
    this.http.post('/api/customparameter', json). //is that right? 
     subscribe(); 
    } 

An diesem Punkt wird JSON in das Objekt konvertiert. Also Eigenschaften müssen übereinstimmen.

Wenn Sie auf der Client-Seite ein Array von Objekten übergeben, mit den Namen Id und Name, müssen Sie dasselbe Modell im Backend erstellen.

public class CustomModel { 
    public int Id {get;set;} 
    public string Name {get;set;} 
} 

und Beispiel für die json wird:

[ 
    {"id" : 1, "name": "foo"}, 
    {"id" : 2, "name" : "bar"} 
] 

Hoffnung, dass helfen.