Ich posten JSON auf einem WebAPI-Controller, aber die Eigenschaften im Modell werden nicht gebunden.WebAPI POST [FromBody] nicht verbindlich
public void Post([FromBody] Models.Users.User model) {
throw new Exception(model.Id.ToString());
}
Die rohe Anfrage lautet wie folgt:
POST http://diva2.local/siteapi/User HTTP/: diva2.local
Connection: keep-alive
Content-Length:: application/json, text/plain, */*
Origin: http://diva2.local
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.: application/json;charset=UTF: http://diva2.local/Users
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=: ISO-8859-1,utf-8;q=0.7,*;q=: .ASPXAUTH=4; __RequestVerificationToken=Rp_hUysjwCjmsxw2
{"Id":3,"FirstName":"DIVA2","LastName":"User1","Username":"diva1","IsApproved":true,"IsOnlineNow":true,"IsChecked":true}
Jedes Beispiel, das ich mich finden sagt dies funktionieren sollte, aber model.Id == null
.
Allerdings, wenn ich die JSON ändern:
{User: {"Id":3,"FirstName":"DIVA2","LastName":"User1","Username":"diva1","IsApproved":true,"IsOnlineNow":true,"IsChecked":true}}
alles bindet richtig.
Dies gilt nicht korrekt zu sein scheint. Ich nehme an, ich könnte JObject
als Parameter annehmen und es manuell binden, aber es fühlt sich an, als ob das oben genannte Just Work (tm)?
Update:
Ich habe die Methode geändert, das Modell zurückzukehren, und ich immer noch null erhalten.
public Models.Users.User Post(Models.Users.User user) {
return user;
}
Und die Antwort:
HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Content-Type: application/json; charset=utf-8
Expires: -1
Server: Microsoft-IIS/8.0
X-AspNet-Version: 4.0.30319
X-MiniProfiler-Ids: ["a0fab514-d725-4d8f-9021-4931dc06ec4a","fdeeb9a8-9e36-41d8-91d3-5348e880e193","c1b4cc86-d7c3-4497-8699-baac9fa79bf1"]
X-Powered-By: ASP.NET
Date: Tue, 21 May 2013 09:06:00 GMT
Content-Length: 4
null
Können Sie die Klassendefinition für Benutzer anzeigen? –
#facepalm. Kein parameterloser Konstruktor. Prost für die aufschlussreiche Ausnahme .net! – mattdwen
Gibt es so etwas wie Schande, eine Frage zu löschen? – mattdwen