【问题标题】:JSON.Stringify data including boolean valuesJSON.Stringify 数据包括布尔值
【发布时间】: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


【解决方案1】:

$('.gsGasoline').val() 更改为$('.gsGasoline').is(':checked')

【讨论】:

    【解决方案2】:

    这个问题原来是由于我的服务器端架构的继承方面。父类中的所有属性都被正确反序列化,子类中的所有内容都保持不变。与传递给 JSON.Stringify 函数的类型无关。

    感谢大家的帮助。

    【讨论】:

      猜你喜欢
      • 2016-12-21
      • 2022-07-28
      • 2017-10-13
      • 2023-03-15
      • 2011-05-31
      • 2018-09-10
      • 2013-09-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多