2016-08-04 9 views
0

an die Steuerung Wie Klartext an einen ControllerKlartext gesendet mvc4

public ActionResult mappingNodes(string model) { 
    var test = model; 
    return Json(new { foo = "bar"}); 
} 

über post-Methode senden:

$http.post("/msm/test/mappingNodes", postModel, { headers: { 'Content-Type': 'text/plain'}}) 

Wenn ich wählen, für die postModel eine Zeichenkette wie "abc" oder '{model : "abc"}' I Nullen auf der Controllerseite.

Wenn ich die Parameter Content-Type zu application/jason ändern I „abc“ auf Controller-Seite, wenn die postModel-'{model : "abc"}' gesetzt, wenn die postModel wird auf „abc“ Ich bekomme Fehlerstatuscode 500 in meiner errorCallback Funktion.

Antwort

0

Sie können den Text einfach mit der Server-URL anhängen.

So:

$http.post("/msm/test/mappingNodes/yourtext", postModel, { headers: { 'Content-Type': 'text/plain'}}) 

Oder wenn der Wert in einer Variablen ist:

$http.post("/msm/test/mappingNodes/" + value, postModel, { headers: { 'Content-Type': 'text/plain'}}) 
+0

Wenn ich Ihren Vorschlag versuche und 'postModel' auf '{model:" {\ "abc \": \ "test \"} "}' setze, habe ich auch den Statuscode 500 in meinem errorCallback. – StellaMaris

0

Pass durch den Query-String (URL-kodiert):

$http.post("/msm/test/mappingNodes?postModel=" + postModel) 

Oder ist es in den Postdaten:

$http.post("/msm/test/mappingNodes", { postModel: "myvalue" }) 
0

Aktualisieren Sie Ihre Aktion mit [FromBody] Parameter Attribut

public ActionResult mappingNodes([FromBody]string model) { 
    var test = model; 
    return Json(new { foo = "bar"}); 
} 

Hier ist ein Beispiel Client-Anforderung ist.

POST http://localhost:5076/msm/test/mappingNodes HTTP/1.1 
User-Agent: Fiddler 
Host: localhost:5076 
Content-Type: text/plain 
Content-Length: 5 

"abc" 
+0

Ich versuchte es über '$ http.post ("/msm/test/mappingNodes "," abc ", {headers: {'Inhaltstyp': 'text/plain'}})' aber die Variable 'model' in Der Controller ist null. – StellaMaris

+0

versuche die selbe Anfrage aber mit Content-Type als application/jason und sehe ob das einen Unterschied macht – Nkosi

+0

Ich bekomme das gleiche Ergebnis wie ich in meinem Start-Post 'errocode 500' beschrieben habe. – StellaMaris

1

Sie sollten Daten senden in JavaScript-Array an die Steuerung wie folgt aus:

$http.post("/msm/test/mappingNodes", { model : postModel }, { headers: { 'Content-Type': 'text/plain'}}) 

Beachten Sie, dass die Namen der Parameter in Ihrem Controller model müssen Schlüssel model in JavaScript-Array entsprechen.

+0

Ich weiß nicht, ob "Content-Type": "text/plain" in Ihrem Vorschlag der richtige Parameter ist. In Ihrem Fall würde ich "Content-Type" wählen: "application/json", weil Ihr Objekt '{model: postModel}' vom Typ json ist, kein einfacher Text. – StellaMaris

+0

Ich weiß nicht, was Sie für das Senden von POST-Anfragen verwenden, aber mit jquery mache ich es so 'var request = $ .ajax ({url:' myurl ', typ: "POST", cache: false, Daten: {SomeId: ID}, Datentyp: "JSON" }) Anfrage.done (function (data)) { // Ihr Code }) }) ' Dabei steht' dataType' für den Datentyp, den Sie vom Server erwarten. Und es funktioniert gut mit meinem Controller '[HttpPost] öffentlichen async Aufgabe MyController (String someId)' –