Ich erstelle eine Anwendung mit Durandal, mit WebAPI als Server. Ich habe ein KendoUI-Gitter, das die Daten vom Server korrekt anzeigt und ordnungsgemäß funktioniert, bis die POST- oder PUT-Methoden aufgerufen werden. Hier ist meine Methode GET: WebAPI-Modellbindung von JSON
und Sie können sehen, dass die Daten an die UI bindet (die data-bind extensibility in Durandal verwendet zu ändern Bindungen Kendo):
Dann bearbeite ich die Daten im Grid und es geht um die Änderungen in der Anfrage an den Server, wie Sie in diesem Fiddler Ergebnis sehen:
auf der Serverseite kann ich die Daten bekommt, die von den Kunden weitergegeben wird, etwas zu binden, ich als Parameter platzieren für die Methode auf dem POST oder PUT.
ich dies zu realisieren ist ein paar verschiedene Technologien zur Fehlerbehebung (zB Durandal, KnockoutJs, Kendo Databinding und WebAPI), aber ich denke, die Grundlagen arbeiten, werden die Daten abgerufen und gebunden an die Benutzeroberfläche, und es wird wieder gebucht wenn geändert, aber der WebAPI-Endpunkt kann nicht an die Daten gebunden werden.
Wie kann ich das übergebene "models" -Array durch die ModelBinding-Struktur in WebAPI binden?
UPDATE- Hier ist das hilfreich JSFiddle, die mir den richtigen Content-Type gab hinzuzufügen: http://jsfiddle.net/Xhrrj/1/
new kendo.data.DataSource({ transport: { read: { type: "POST", url: "../cccs/service.svc/SupplierSearch", contentType: "application/json; charset=utf-8", dataType: 'json'...
dies aus dem Telerik Forum kommenden here
Basierend auf dem Beispiel fiddler Anfrage senden Sie die Daten zurück, aber nicht im richtigen Format, so dass Web.API es nicht konsumieren kann. Das Problem ist also, wie Sie die Daten serialisieren. Also poste bitte den Code deiner Methode zum Speichern von Änderungen oder wo du die 'put' Anfrage erstellst. – nemesv
Es sieht so aus, als würde es form-urlencoded mit dem json-Format vermischen - es sendet 'models =' und dann folgen urlencodierte JSON-Objekte. –
@nemesv, Ich benutze KendoUI's JavaScript-Funktionen, hier ist ein Ausschnitt, den ich denke, könnte hilfreich sein: parameterMap: function (options, operation) { if (operation! == "lesen" && options.models) { zurück { Modelle: kendo.stringify (options.models)}; } } - Link http://docs.kendoui.com/getting-started/web/grid/editing - auch das Lesen, könnte eine Möglichkeit sein, das JSON-Modell zu ändern, aber nicht sicher - http: // docs .kendoui.com/getting-started/framework/datasource/overview –