【发布时间】:2016-02-08 16:37:56
【问题描述】:
我正在使用ASP.NET 5 RC1 Update1
我有一个 jquery ajax 调用,它通过 POST 将 html 表的 JSON 数据发布到 MVC 控制器方法。但是控制器方法似乎无法接收此数据。
html:
<table id="datatab" border="1">
<tbody>
<tr role="row" class="odd">
<td class="sorting_1" style="display: none;">2087971</td>
<td>1</td>
<td>1</td>
<td>aaaa</td>
<td>John Smith</td>
<td><input type="text" name="value1" value="1"></td>
<td><input type="text" name="value2" value="2"></td>
<td><input type="text" name="value3" value="3"></td>
<td></td>
</tr>
<tr role="row" class="even">
<td class="sorting_1" style="display: none;">2087972</td>
<td>2</td>
<td>2</td>
<td>bbbb</td>
<td>Peter Parker</td>
<td><input type="text" name="value1" value="4"></td>
<td><input type="text" name="value2" value="4"></td>
<td><input type="text" name="value3" value="4"></td>
<td></td>
</tr>
</tbody>
</table>
<button id="GetData">Get data</button>
jquery:
<script>
$("#GetData").click(function (event) {
debugger;
event.preventDefault();
var TableData = new Array();
$('#datatab tbody tr').each(function (row, tr) {
TableData[row] = {
"Id": $(tr).find('td:eq(0)').text()
, "Input1Value": $(tr).find('td:eq(5) input').val()
, "Input2Value": $(tr).find('td:eq(6) input').val()
, "Input3Value": $(tr).find('td:eq(7) input').val()
}
});
var myData = JSON.stringify(TableData);
$.ajax({
type: "POST",
contentType: "application/json; charset=UTF-8",
url: '@(Url.Action("UpdateData", "MyController"))',
data: "myData=" + myData,
success: function (msg) {
}
});
});
</script>
由于我要做的第一件事是验证控制器是否可以接收数据,然后我将控制器方法更改为
public IActionResult UpdateData(string[][] myData)
但是,当我在此 ActionResult 行上设置断点并检查 myData 的值时,它是一个空数组。
我使用 Fiddler 确认 JSON 数据是否已发送,Fiddler 确实确认了这一点:
myData=[{"Id":"2087971","Input1Value":"1","Input2Value":"2","Input3Value":"3"},{"Id":"2087972"," Input1Value":"4","Input2Value":"4","Input3Value":"4"}]
我也尝试将 [FromBody] 添加到 ActionMethod 参数中
public IActionResult UpdateData([FromBody] string[][] myData)
但是 myData 的值是null。
乳清不会填充myData 变量。
我做错了什么?
【问题讨论】:
-
myData 不是一个数据结构数组,为什么不让它成为一个数组数组,就像您的操作所期望的那样?
标签: asp.net-core asp.net-core-mvc