ASP.NET WebAPIベータからRCへのアップグレードは、多少の興奮と大きな不満をもたらしました。私は大部分の問題を解決することができましたが、今私を噛んでいるのはJSON要求データの大文字と小文字を区別することです。ASP.NET WebAPI JSONバインディング大文字と小文字の区別
JSONリクエスト(デフォルトではJSON.NETフォーマッタ)で使用されるフォーマッタは、フォームURLコード化データに使用されるフォーマッタが大文字と小文字を区別するように見えます。大文字と小文字を区別しないフォーマッタを使用するようにJSONリクエストを設定する方法はありますか?ここで
私はJSONリクエストで過ごしています問題を説明するための簡単な例です。
HTML/JavaScriptの
<button id="tester">Click here!</button>
<script type="text/javascript">
$(function() {
$("#tester").on("click", function() {
$.ajax({
type: "POST",
url: "/Api/Test/Index/" + 168,
data: ko.toJSON({ key: 123, value: "test value" }), // THIS FAILS
// Key: 123, Value: "test value" <- BUT THIS WORKS
contentType: "application/json; charset=utf-8",
statusCode: {
200: function() {
$("body").append("<p>Success</p>");
},
400: function() {
$("body").append("<p>Failure</p>");
}
}
}).always(function() {
$("body").append("<hr />");
});
});
});
</script>
C#
public class TestController : ApiController
{
public HttpResponseMessage Index(int? id, KeyValuePair<int, string> test)
{
if (id != 168 || test.Key != 123 || test.Value != "test value")
return Request.CreateResponse(HttpStatusCode.BadRequest);
return Request.CreateResponse(HttpStatusCode.OK);
}
}
私はしましたJSONデータが提供されている行にコメントを提供しました。適切なケーシングのプロパティメンバーによってJavaScriptオブジェクトのコンベンションをやめさせるのではなく、C#のプロパティを下げることで規約を破ってはいけません。何かご意見は?
を。 POSTリクエスト内で、つまり要求本体内でデータを送信します。しかし、HTTPドキュメントでは、ヘッダーフィールド(と値)は大文字と小文字を区別しないとみなされ、本文については何もありません。なぜフォームurlencodedデータの動作ではないと思いますか? – raina77ow
[このディスカッション](http://groups.google.com/group/soundcloudapi/browse_thread/thread/c266c0d2efa88fbb/9ad3969dde919cba)を確認してください。 – raina77ow
@ raina77owこれは実際にはHTTP仕様ではなく、ASP.NET WebAPI RCで使用されるJSON.NETフォーマッタの動作です。 FormUrlフォーマッタは大文字と小文字を区別しないように見えますが、JSON.NETフォーマッタは大文字と小文字を区別します。 –