0

次のように 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"バインドされます。Foonull

www-form-urlencodedビジネス上の理由から、JSON ではなくコンテンツ タイプを使用することが重要です。

FormUrlEncodedMediaTypeFormatterビルトインは多くの内部クラスに依存しているため (特に、 a をインスタンス化しFormUrlEncodedParser、その動作を拡張するためのフックがないように見えます) 、ビルトインを置き換えることは現実的ではないようです。

問題は、入力をではなくFormUrlEncodedParserとして解釈しているようです。"null"null

Web API をFoonullではなくバインドする方法はありますか?"null"

または、jqueryに渡されnullた値のキーを省略させる方法はありますか?data$.ajax

4

1 に答える 1