2016-02-16 60 views
1

我試圖使用JSON對象將數據傳遞到我的Web API。發送單個對象似乎工作正常,但只要我把第二個參數,第二個對象似乎甚至不似乎在服務器端初始化?將多個對象發佈到Web API

請查看下面的代碼,以查看我怎樣正在處理數據參數

[HttpPost("")] 
public JsonResult Post([FromBody]Log_Header headerData, 
         [FromBody]Log_Detail detailData) 
{ 
    return Json("Test"); 
} 

每個類以上的有簡單的字符串的數據,例如下面類的:數據的

public class Log_Header 
{ 
    public int Id { get; set; } 
    public string Name{ get; set; } 
} 

實施例被髮送:

var header = { 
    Id: 0, 
    Name: "Test 3", 
} 

var detail = { 
    Id: 0, 
    Desc: "Test 1", 
} 

$http({ 
    method: 'POST', 
    url: "api/addLog", 
    data : { 
     header: header, 
     detail: detail 
    } 
}) 

這些都只是演示數據。

我曾嘗試發送在幾種不同的方式e.g下面的數據了:

var data = { 
    Id: 0, 
    Name: "Test 3", 
    LogID: 0, 
    Desc: "Test", 
} 

,但似乎沒有得到這個工作,我猜我錯誤地設置Web API?

總的來說,問題是[FromBody]Release_Log_Detail detailData根本沒有收到任何數據,從斷點查看對象時顯示爲null

如果有人有任何想法,請在下面留言或回答。如果您需要更多信息,請詢問。

+0

你還在發佈一個對象,現在有兩個屬性也是對象。使用兩個屬性調用c#對象,這兩個屬性稱爲正確類型的標題和詳細信息,並將其作爲Post的輸入。 – Mant101

+0

@ Mant101我嘗試了很多方法(正如我對許多人所說的在這個問題中發佈的方式)。你所說的話似乎也沒有奏效。 – furkick

+0

另一個可能的重複[使用HttpClient和Web API方法發佈到Web API \ [FromBody \]參數結束爲空](http://stackoverflow.com/q/35344981/692942) – Lankymart

回答

3

無論我們從角$ HTTP POST,它考慮一個單一的對象,所以我們需要在一個單一的對象讀取它的服務器

,我們可以這樣做

[HttpPost("")] 
public JsonResult Post([FromBody]PostData data) 
{ 
    return Json("Test"); 
} 

class PostData 
{ 
    public Log_Header LogHeader { get; set; } 
    public Log_Detail LogDetail { get; set; } 

} 

角度支柱

$http({ 
    method: 'POST', 
    url: "api/addLog", 
    data : { 
     LogHeader : header, 
     LogDetail : detail 
    } 
}) 
+0

感謝您的回覆** Sanjay **!我似乎使用這種方法將'data'顯示爲'null'。你將如何通過數據發送(通過Json)? – furkick

+0

請現在檢查 –

+0

不幸的是,'PostData'對象仍然從'$ http post'中獲取'null' – furkick

-1

在JavaScript

$http({ 
    method: 'POST', 
    url: "api/addLog", 
    data : JSON.stringify({ 
      header: header, 
      detail: detail 
     }) 
}) 

創建一個模型

public class dataViewModel 
{ 
    public string[] header{ get; set; } 
    public string[] detail{ get; set; } 
} 

你必須創建名稱api和動作名稱的控制器addLog

[HttpPost] 
public JsonResult addLog(dataViewModel data) 
{ 
    return Json("Test"); 
} 

希望這有助於

+0

你解決了你的問題 – anand

+0

對不起,但我使用的是對象而不僅僅是字符串。 – furkick

+0

查看我的新代碼 – anand

相關問題