0
我們調用web-API控制器如下: -的Web API deserialising AJAX發佈空值是 「空」 的字符串
var foo = ...; // may be null.
...
var data = { Foo: foo, ... };
$.ajax({
url: ...
type: 'POST'
data: data,
});
當數據deserialised在服務器上爲我們的模型: -
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省略data
的任何null
值的密鑰傳遞給$.ajax
?
您的控制器操作採用哪種模型作爲參數,它看起來像簽名? –
爲什麼不只是遺漏你想成爲'null'的屬性呢? –
該對象正在其他地方生成,並且該屬性不總是爲空。 –