我要做的是将JSON对象传递给WebAPI ajax调用并映射到服务器端的强类型对象。字符串值被完美地发布,但是当涉及到布尔值时,它们根本就没有被传递。以下是我的代码:
var gsGasolineField = $('.gsGasoline').val();
blData = { Gasoline: gsGasolineField };
var json = JSON.stringify(blData);
$.ajax({
type: "POST",
url: url,
data: json,
contentType: "application/json",
dataType: "json",
statusCode: {
201 /*Created"*/: function (data) {
$("#BusinessLayerDialog").dialog("close");
ClearForm("#BusinessLayerForm");
},
400: /*Bad request - validation error*/ function (data) {
$("#BusinessLayerForm").validate().form();
},
500: function (data) {
alert('err');
}
},
beforeSend: setHeader
});
汽油属性在服务器端是boolean类型。
修改
如上所述,Gasoline是boolean并且是MVC我的HTML标记如下
<div style="float: left">@Html.CheckBoxFor(x => x.GasStation.Gasoline, new { @class = "gsGasoline" })</div>
所以我只是取这个复选框的值并将其传递给JSON对象
修改
还试图直接发送它
blData = { Gasoline: true };
仍然是错误的服务器端!
答案 0 :(得分:1)
将$('.gsGasoline').val()
更改为$('.gsGasoline').is(':checked')
答案 1 :(得分:0)
问题原来是由于我的服务器端架构的继承方面。正在正确地反序列化父类中的所有属性,并且子类中的所有内容都保持不变。没有任何东西与传递给JSON.Stringify函数的类型有关。
谢谢大家的帮助。