2017-07-05 149 views
0

我已經經歷了幾個與此有關的問題,到目前爲止,他們都沒有解決我的問題。我將與DataGrid中選定行相關的數據發送到使用ajax的服務器上的操作。 JavaScript代碼如下所示:發送數據到MVC Action通過jQuery ajax,參數爲null

function addSelected() { 
     var grid = $("#optionsGrid").dxDataGrid("instance"); 
     var gridData = grid.getSelectedRowsData(); 

     $.ajax({ 
      type: "POST", 
      url: "/api/Options/AddRange", 
      contentType: "application/json; charset=utf-8", 
      data: JSON.stringify({ data: gridData }) 
     }); 
    } 

和服務器上的動作(現在):

[HttpPost("api/[controller]/[action]")] 
public async Task<IActionResult> AddRange(string data) 
{ 

    return Ok(); 
} 

我已經在瀏覽器中和值的GridData檢查它肯定是有數據填充我想在被髮送到服務器之前,並且該操作被命中,但'data'參數始終爲空。我也嘗試在參數上放置[FromBody]屬性,但它沒有改變它。無論我命名數據或者是否將其串化,參數都爲空。

將數據類型更改爲動態也沒有幫助,它仍然爲空。需要發送的數據在檢查時也包含在請求主體中。

+0

您是否檢查過數據是在請求中發送的?換句話說,'gridData'是否有價值? –

+0

我建議你使用提琴手或任何類似的工具,並看到在行動確切地是什麼被髮送到服務器 – xrodas

+0

[ASP.NET核心MVC:如何獲得未綁定到一個字符串的原始JSON?]( https://stackoverflow.com/questions/31952002/asp-net-core-mvc-how-to-get-raw-json-bound-to-a-string-without-a-type) – Igor

回答

3

嘗試這種方式

function addSelected() { 
    var grid = $("#optionsGrid").dxDataGrid("instance"); 
    var gridData = grid.getSelectedRowsData(); 

    $.ajax({ 
     type: "POST", 
     url: "/api/Options/AddRange?data=" + JSON.stringify(gridData), 
     contentType: "application/json; charset=utf-8" 
    }); 
} 
+0

這工作,不得不從參數中刪除[FromBody]屬性。 – Valuator

0

data參數名稱是在字符串化,你還需要指定要發送data作爲參數。像下面這樣切換:

function addSelected() { 
    var grid = $("#optionsGrid").dxDataGrid("instance"); 
    var gridData = grid.getSelectedRowsData(); 

    $.ajax({ 
     type: "POST", 
     url: "/api/Options/AddRange", 
     contentType: "application/json; charset=utf-8", 
     data: { data: JSON.stringify(gridData) } 
    }); 
} 
+0

仍爲空,我不知道爲什麼。它覺得這*應該是正確的做法。 – Valuator