2015-06-26 50 views
1

我通過老Q &一個像jQuery posts null instead of JSON to ASP.NET Web API(本網站)來了,
http://encosia.com/using-jquery-to-post-frombody-parameters-to-web-api/
https://weblog.west-wind.com/posts/2012/May/08/Passing-multiple-POST-parameters-to-Web-API-Controller-Methods ...
我嘗試了所有的提示和解決方案,但我的控制器中仍然沒有任何價值。
這裏是我的代碼:
後從JQuery的JSON來ASP.Net MVC:2個參數爲null

客戶端HTML文件:

var coup = { Token: token, MotPropose: RecupMot() }; 
var coupJSON = JSON.stringify(coup); 

$.ajax({ 
      type: 'POST', 
      url: urlJeu, 
      dataType: 'json', 
      data: coupJSON, 
      success: function (reponseJSON) { 
       /* CODE HERE */ 
      }, 
     }); 

哪個正確發送以下JSON(說小提琴):

{"Token":103,"MotPropose":"ravoi"} 

(順便說一句,我很擔心缺失「在int 103附近,不是嗎?)

服務器C#控制器和對象:

public object Post([FromBody]CoupMeliMelo coup) 
{ 
    return Ok(jeu.JouerLeCoup(coup)); 
} 

public class CoupMeliMelo : ICoup 
{ 
    public string MotPropose { get; set; } 
    public int Token { get; set; } 
} 

然後,當JSON來控制,對象政變被創建,但MotPropose是零和令牌是0

我卡住了!謝謝你的幫助。

+0

你能確保RecupMot()函數返回字符串值嗎? – Win

+0

是的,實際上它返回「ravoi」。 – Nip

+0

嘗試在您的ajax調用中添加'contentType:「application/json; charset = utf-8」。 –

回答

0

首先,沒有理由調用stringify。只需發佈該對象。其次,將內容作爲application/json發送。

var coup = { Token: token, MotPropose: RecupMot() }; 

$.ajax({ 
     type: 'POST', 
     url: urlJeu, 
     dataType: 'json', 
     contentType: "application/json", 
     data: coup, 
     success: function (reponseJSON) { 
      /* CODE HERE */ 
     }, 
    }); 

最後,[FromBody]屬性不適用於ASP.NET MVC,僅適用於WebApi。你不需要它。

public object Post(CoupMeliMelo coup) 
{ 
    return Ok(jeu.JouerLeCoup(coup)); 
} 
+0

其實,它是WebApi,因此我保留'[FromBody]' 然後我刪除了'stringify',然後添加了ContentType,但是沒有成功... (對不起,延遲:我跳到VS 2015,麻煩...) – Nip