我们正在调用一个 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