【发布时间】:2012-11-01 10:52:02
【问题描述】:
我要做的是将 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
});
Gasoline 属性在服务器端是布尔类型。
编辑:
如上所述,Gasoline 是布尔值,作为 MVC,我的 HTML 标记如下
<div style="float: left">@Html.CheckBoxFor(x => x.GasStation.Gasoline, new { @class = "gsGasoline" })</div>
所以我只是将这个复选框的值传递给 JSON 对象
编辑
也试过直接发送true
blData = { Gasoline: true };
还是假服务器端!
【问题讨论】:
-
gsGasoline是什么类型的字段
-
能否还包括控制器上的操作代码、您尝试映射到的 C# 类以及 .gsGasoline 的 HTML 标记?
-
如果 gsGasolineField 是一个复选框,它将返回“on”或“off”,而不是布尔值。试试
(gsGasolineField === 'on' ? true : false)或只是(gsGasolineField === 'on') -
我认为
jQuery.val()总是返回一个字符串,而不是一个布尔值。 -
@Barmar - 确实如此,它始终是一个字符串,并且将其字符串化肯定会使其成为一个字符串,那么为什么要在服务器端检查布尔值呢?
标签: c# javascript jquery asp.net-mvc-4