C# 字符串化数据,包括布尔值
我要做的是将JSON对象传递给WebAPI ajax调用,并映射到服务器端的强类型对象。字符串值被完美地传递,但是当涉及到布尔值时,它们根本没有被传递。下面是我的代码:C# 字符串化数据,包括布尔值,c#,javascript,jquery,asp.net-mvc-4,C#,Javascript,Jquery,Asp.net Mvc 4,我要做的是将JSON对象传递给WebAPI ajax调用,并映射到服务器端的强类型对象。字符串值被完美地传递,但是当涉及到布尔值时,它们根本没有被传递。下面是我的代码: var gsGasolineField = $('.gsGasoline').val(); blData = { Gasoline: gsGasolineField }; var json = JSON.stringify(blData); $.ajax({ type: "POST",
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
});
汽油属性在服务器端为布尔类型
编辑:
如上所述,汽油是布尔型的,作为MVC,我的HTML标记如下
<div style="float: left">@Html.CheckBoxFor(x => x.GasStation.Gasoline, new { @class = "gsGasoline" })</div>
还是假的服务器端 将
$('.gsgallet').val()
更改为$('.gsgallet')。是否(':checked')
问题原来是由于我的服务器端体系结构的继承方面。父类中的所有属性都被正确反序列化,子类中的所有内容都保持不变。与传递给JSON.Stringify函数的类型无关
谢谢大家的帮助。gsGasoline是哪种类型的字段?请同时提供控制器上操作的代码、尝试映射到的C类以及.GSGALIATE的HTML标记?如果gsGasolineField是复选框,则返回“开”或“关”,而不是布尔值。试试
(gsGasolineField=='on'?true:false)
或者干脆(gsGasolineField=='on')
我认为jQuery.val()
总是返回字符串,而不是布尔值。@Barmar-它是,它总是一个字符串,而字符串化肯定会使它成为字符串,那么为什么要在服务器端检查布尔值呢?
blData = { Gasoline: true };