我在jquery中有一个函数,它创建一个从复选框中选择的值列表。现在我希望在我的控制器操作中有这个列表。我已将此列表转换为JSON但我无法将其传递给控制器。我还尝试创建对应于json数据的自定义模型。
$("button").click(function () {
//alert("clicked");
var obj = {};
//var tempRadio = [];
for (var i = 1; i <= globalVar; i++) {
if ($("#" + i).prop("checked") == true) {
obj[i] = $('input[class=' + i + ']:checked').val();
}
}
$.ajax({
contentType: 'application/json; charset=utf-8',
dataType: 'json',
type: 'POST',
url: '@Url.Action("SkillAdd","User")',
data: JSON.stringify(obj),
//data: hello,
error:function ()
{
alert("Error");
},
success: function () {
alert(JSON.stringify(obj));
}
});
});
public ActionResult SkillAdd(List<string> Id, List<string> Name)
{
return View();
}
public ActionResult SkillAdd(List<MyModel> object)
{
return View();
}
你有一个javascript对象,但你需要创建一个数组,以便它可以在post发布到List
。所以将你的js代码更改为:
var obj = []; // it's array now
然后你会在循环中添加项目:
obj.push( $('input[class=' + i + ']:checked').val());
并在您的ajax调用名称中,您在控制器操作中拥有的参数:
data:{ Id : obj }
现在你可以在动作方法List<string>
中有一个参数来保存ajax调用发布的数据。
public ActionResult SkillAdd(List<string> Id)
{
return View();
}
希望能帮助到你。