2012-08-02 73 views
2

我有一個F#WebAPI項目,並且Post方法的參數始終設置爲null。我對WebAPI的發佈操作的參數始終爲空

(的名字都被匿名)

這裏是控制器:

type TestController() = 
    inherit ApiController() 
    member x.Get() = 
     getValues() 

    member x.Post ([<FromBody>] values: Values) = 
     storeValues values 

這是怎麼記錄Values被定義爲:

type TypeA = { 
    Id: string 
    .... 
    } 

.... 

type Values = { 
    AValues: list<TypeA> 
    BValues: list<TypeB> 
    CValues: list<TypeC> 
    } 

在我看來,我做一個POST調用API如下:

 return $.ajax({ 
      type: "POST", 
      url: url, 
      data: JSON.stringify(params), 
      contentType: "application/json", 
      beforeSend: function (jqXHR) { jqXHR.setRequestHeader("X-HTTP-Method", type); } 
     }); 

其中data出來到:

{ 
    "AValues":[{"Id":"blahblah", ....}], 
    "BValues":[...], 
    "CValues":[...] 
} 

我更新了JS做data評價到:

{ 
    "Values": 
    { 
     "AValues":[{"Id":"blahblah", ....}], 
     "BValues":[...], 
     "CValues":[...] 
    } 
} 

現在調試器拋出一個nullreference異常,並說,要求爲空(斷點在我的記錄定義)。

問題是它確實碰到控制器中的Post方法,但values始終設置爲null。

+0

什麼'JSON.stringify(PARAMS)'產生?我的意思是你發送的JSON數據是什麼? – tugberk 2012-08-03 15:25:24

+0

它已在上面列出。 '{「Id」:「blahblah」,....}], 「BValues」:[...], 「CValues」:[...] } – encee 2012-08-03 19:13:26

回答