我的jquery脚本代码部分,脚本工作正常并在dataBLL中设置数据数组/对象..
var dataBLL = [];
$('#mytable tr').each(function (i) {
dataBLL.push({
id: $(this).find('td:eq(0)').text(),
ctype: $(this).find('td:eq(1)').text(),
cpath: $(this).find('td:eq(2)').text(),
ckey: $(this).find('td:eq(3)').text(),
ckey: $(this).find('td:eq(4) input:frist').val(),
});
$.ajax ({
url:"User/BllBtn",
type:"POST",
data:"dataBll="JSON.stringify(dataBLL);
dataType: "json",
success: function (e) {
alert("sucess");
}})
但我无法将此对象/数组发送到我的控制器以使用它的数据并遍历每一行条目。
我的控制器签名
[HttpPost]
public ActionResutl BllBtn(List<string> dataBll)
{
}
请指导如何将此对象作为列表,以便我可以以最简单的方式循环。
答案 0 :(得分:3)
您的语法错误(您的浏览器控制台会告诉您),以及您生成无效的JSON。
data: { "dataBll": dataBLL }
我认为应该工作。或
data: JSON.stringify({ "dataBll": dataBLL })
contentType: 'application/json; charset=UTF-8'
作为ajax调用中的另一个选项。
下一个问题是您尝试接受List<string>
到您的方法,但dataBll
是一个具有以下属性的复杂对象:
id, ctype, cpath, ckey, ckey
首先,您不能在同一个对象中定义两次ckey,其次您的JSON对象与C#方法中的类型不兼容。您需要定义一个类,例如
public class myNewType
{
public string id {get; set; }
public string ctype {get; set; }
public string cpath {get; set; }
public string ckey {get; set; }
}
然后接受List<myNewType>
作为方法的参数:
public ActionResult BllBtn(List<myNewType> dataBll)