我发送名称,这是一个字符串,表数据是一个二维数组 我在控制器中得到的名字很好,但我似乎无法得到tableData。
这就是我创建表格数据的方式
资料表
var tableData = new Array();
$('table tbody tr').each(function () {
var tableRow = new Array();
tableRow.push({ 'id: $(this).data('id') });
tableRow.push({ 'item': $(this).data('item') });
tableData.push(tableRow);
});
的JavaScript
var data = { Name: name, TableData: tableData };
$.ajax({
type: 'POST',
url: url,
data: data
});
控制器
[HttpPost]
public void Add(string Name, string[][] TableData)
{
// Stuff
}
答案 0 :(得分:5)
与ASP.NET MVC应用程序一样,您可以从定义将反映到视图逻辑的视图模型开始:
public class MyViewModel
{
public string Name { get; set; }
public Ilist<MyViewModelItem> TableData { get; set; }
}
public class MyViewModelItem
{
public string Id { get; set; }
public string Item { get; set; }
}
然后修复您在客户端上构建数据的方式:
var tableData = [];
$('table tbody tr').each(function () {
tableData.push({
id: $(this).data('id'),
item: $(this).data('item')
});
});
然后将此信息发送到控制器的方式(将其作为JSON有效负载发送,以确保只要您的视图模型遵循正确的格式,复杂对象将在服务器上正确绑定):
$.ajax({
type: 'POST',
url: url,
data: JSON.stringify({ name: name, tableData: tableData }),
contentType: 'application/json'
});
和最后一块拼图 - 控制器动作的签名:
[HttpPost]
public void Add(MyViewModel model)
{
// Stuff
}