9

サーバーとしてWebAPIを使用し、Durandalを使用してアプリケーションを作成しています。サーバーからのデータを正しく表示し、POST または PUT メソッドが呼び出されるまで正しく機能する KendoUI グリッドがあります。これが私のGETメソッドです: ここに画像の説明を入力

そして、そのデータが UI にバインドされていることがわかります (Durandal のデータバインド拡張機能を使用して、剣道バインディングに変更しました)。 ここに画像の説明を入力

次に、グリッド内のデータを編集し、この Fiddler の結果でわかるように、リクエスト内の変更をサーバーに渡します。 ここに画像の説明を入力

サーバー側では、クライアントから渡されたデータを取得して、POST または PUT のメソッドのパラメーターとして配置したものにバインドできません。 ここに画像の説明を入力

これはトラブルシューティングが必要ないくつかの異なるテクノロジ (Durandal、KnockoutJs、Kendo DataBinding、WebAPI など) であることは認識していますが、基本的な部分は機能していると思います。データは取得されて UI にバインドされ、変更されたときにポストバックされますが、WebAPI はエンドポイントはデータにバインドできません。

渡された「モデル」配列を取得して、WebAPI の ModelBinding 構造を介してバインドするにはどうすればよいですか?

更新-追加する正しいコンテンツタイプを提供してくれた便利なJSFiddleは次のとおりです: 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'...

これは Telerik フォーラムから来ています。

4

2 に答える 2

6

form-urlencodedフォーマットが混同されているように見えjsonます-送信されているデコードされた文字列を見るmodels=と、urlencoded JSON オブジェクトが続きます。

于 2013-05-05T07:26:05.890 に答える
0

私の経験から、PUT エンドポイントの宣言は次のようにする必要があると思います。

[HttpPut]
public void Put([FromBody]IEnumerable<Product> models) { }

したがって、製品配列はリクエストの URL ではなく本文にあるため (私が思うに?)、FromBody 属性が必要です。

于 2013-05-04T22:06:25.520 に答える