我们正在调用一个 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因为它依赖于许多内部类(特别是,它实例化了一个FormUrlEncodedParser,并且似乎没有挂钩来扩展其行为)。
问题似乎FormUrlEncodedParser是将输入解释为"null"而不是null.
有没有办法让 web api 绑定null而不是"null"Foo?
或者,有没有办法让 jquery 省略传递给的任何null值的键?data$.ajax