2016-07-09 6 views
0

Ich habe mit einem Problem zu kämpfen und ich kann keinen Weg finden, es zu lösen.mvc Post-Methode funktioniert nicht

Hier ist meine Klasse Student:

public class Student 
{ 
    public int ID { get; set; } 
    public string Nume { get; set; } 
    public string Prenume { get; set; } 
    public int Nota { get; set; } 
    public bool Status { get; set; } 
} 

Und hier ist die Post-Methode von der Steuerung:

[HttpPost] 
public IHttpActionResult Post([FromBody] Student student) 
{ 
    if (student == null) return BadRequest(); 
    studenti.Add(student); 
    return CreatedAtRoute("StudentApi", new { ID = student.ID }, student); 
} 

ich eine JSON habe versucht zu senden, wie:

{ "ID": 6, "Nume": "Test", "Prenume": "TestP", "Nota": 10, "Status": true } 

und es zurückgeben ... jedes Mal, wenn ich null bekomme und kein Element zur Liste hinzugefügt wird ...

+0

Bitte lesen Sie http://stackoverflow.com/editing-help zu sehen, wie Code korrekt zu formatieren ... dann weitere Informationen geben über * wie * Sie Sende die JSON –

+0

Ich poste sie mit Postman, Content-Ty pe: application/json und im Senden des oben genannten Modells. { "ID": 6, "Nume": "Test", "Prenume": "TestP", "Nota": 10, "Status": true } – Florin

+0

Put Debug-Punkt in Schach sind Sie in der Lage um diese Methode zu treffen? Wenn nicht, überprüfen Sie die Routenkonfiguration. –

Antwort

0

Es ist schwer zu sagen, was das Problem ist, weil Sie uns nicht sind das zeigt, wie Sie die Aktion Beitrag nennen, aber lassen Sie uns sagen, dass Sie eine Web-api-Controller haben StudentController genannt, die wie folgt aussieht:

public class StudentController : ApiController 
{ 
    [HttpPost] 
    public IHttpActionResult Post([FromBody] Student student) 
    { 
     if (student == null) return BadRequest(); 
     //studenti.Add(student); 
     return CreatedAtRoute("StudentApi", new { ID = student.ID }, student); 
    } 
} 

ein aufgeben Student der Post Aktion mit jQuery Sie können dies tun:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.3/jquery.min.js"></script> 
<script type="text/javascript"> 
    $(function() { 
     $("#btnAddStudent").click(function() { 
      var student = { 
       "ID": 6, 
       "Nume": "Test", 
       "Prenume": "TestP", 
       "Nota": 10, 
       "Status": true 
      } 
      $.ajax({ 
       type: "POST", 
       url: "/api/Student", 
       data: student, 
       success: function (data) { 
        alert("New student created."); 
       }, 
       error: function (error) { 
        alert("Called failed"); 
       } 
      }); 
     }); 
    }); 
</script> 
<input type="button" id="btnAddStudent" value="Add Student" /> 
+0

'dataType:" json "' ist nicht nur nicht erforderlich (und ich würde es nie empfehlen), sondern ist für die Antwort, nicht die Anfrage. [Meinten Sie "contentType"] (http://api.jquery.com/jquery.ajax/)? –

+0

Vielen Dank, meine Herren! Also ... ist es richtig mit dem Datentyp oder sollte ich contentType verwenden? – Florin

+0

Entfernen Sie dataType vollständig.Ich habe es auf meiner Seite versucht und der Anruf funktioniert immer noch. Und bitte denken Sie daran, als beantwortet zu markieren, wenn mein Beitrag Ihnen geholfen hat –

Verwandte Themen