次のように web-api コントローラーを呼び出しています。
var foo = ...; // may be null.
...
var data = { Foo: foo, ... };
$.ajax({
url: ...
type: 'POST'
data: data,
});
データがサーバー上でモデルに逆シリアル化される場合:-
public class BarController : ApiController
{
public void Post(Bar bar)
{
...
}
}
public class Bar
{
public string Foo { get; set; }
...
}
値はではなく に"null"
バインドされます。Foo
null
www-form-urlencoded
ビジネス上の理由から、JSON ではなくコンテンツ タイプを使用することが重要です。
FormUrlEncodedMediaTypeFormatter
ビルトインは多くの内部クラスに依存しているため (特に、 a をインスタンス化しFormUrlEncodedParser
、その動作を拡張するためのフックがないように見えます) 、ビルトインを置き換えることは現実的ではないようです。
問題は、入力をではなくFormUrlEncodedParser
として解釈しているようです。"null"
null
Web API をFoonull
ではなくバインドする方法はありますか?"null"
または、jqueryに渡されnull
た値のキーを省略させる方法はありますか?data
$.ajax