2012-11-01 53 views
0

我想要做的是將JSON對象傳遞給WebAPI ajax調用並映射到服務器端的強類型對象。字符串值完美張貼,但是當涉及到布爾值時,它們根本不被傳遞。以下是我的代碼:JSON.Stringify數據包括布爾值

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> 

所以我只是把這個複選框的值,並把它傳遞給JSON對象

EDIT

鋁所以試圖直接發送它真

blData = { Gasoline: true }; 

還是虛假的服務器端!

+0

是什麼類型的字段是gsGasoline – Garvin

+0

你能否也請在你的控制器上包含Action的代碼,你試圖映射到的C#類以及.gsGasoline的HTML標記? – Christoffer

+1

如果gsGasolineField是一個複選框,它將返回「on」或「off」,而不是布爾值。嘗試'(gsGasolineField ==='on'?true:false)'或只是'(gsGasolineField ==='on')' – jrajav

回答

0

原來,這個問題是由於我的服務器端架構的繼承方面。父類中的所有屬性都正確反序列化,並且子類中的所有內容都保持不變。沒有什麼與傳遞給JSON.Stringify函數的類型有關。

謝謝大家的幫助。

1

變化$('.gsGasoline').val()$('.gsGasoline').is(':checked')