C# 使用jquery创建列表并将其发布到asp.net mvc

C# 使用jquery创建列表并将其发布到asp.net mvc,c#,javascript,jquery,.net,asp.net-mvc-3,C#,Javascript,Jquery,.net,Asp.net Mvc 3,我正在寻找一种方法,将给定类的所有现有复选框的值存储到某种列表或数组中,并通过jquery将结果发送到asp.net mvc控制器。不必选中复选框,我需要所有复选框 更多详情: 我的复选框是这样的 <input type="checkbox" value="1" class="a-checkbox" <input type="checkbox" value="2" class="a-checkbox" <input type="checkbox" value="3" class

我正在寻找一种方法,将给定类的所有现有复选框的值存储到某种列表或数组中,并通过jquery将结果发送到asp.net mvc控制器。不必选中复选框,我需要所有复选框

更多详情:

我的复选框是这样的

<input type="checkbox" value="1" class="a-checkbox"
<input type="checkbox" value="2" class="a-checkbox"
<input type="checkbox" value="3" class="a-checkbox"
public JsonResult SaveList(List<String> values) { //... }
但是我不知道如何创建这样的数据结构。你能帮我吗

多谢各位

编辑:很好,谢谢。你能告诉我这有什么问题吗?确实调用了我的控制器,但列表为空(在服务器端)


这将把所有
复选框
值(
属性)放入
数组

var values = [];
$(".a-checkbox").each(function () {
    values.push($(this).val());
});

// values now equals ["1", "2", "3"]
试试这个

var list = [];
$('input.a-checkbox').each(
    function () {
        // create the list with the help of $(this).val()
        list.push($(this).val());
    }
);
现在,您可以将
list
对象发布到mvc控制器操作中。

我使用.Serialize()为mvc ajax操作格式化表单数据

var checkPostData = $(".a-checkbox").serialize();

我在MVC模式和所有模式下都有相同的问题空值。我发现使用$(“input:checked”)作为我的数据,而不是在js中尝试将值提取到数组中效果更好,我通过给复选框命名值来修复空值问题,因为MVC绑定了输入名称

HTML


这会产生一个查询字符串(例如:
a=1&b=2&c=3&d=4&e=5
),而不是一个数组。他确实说过“那太好了…”而不是“它是必需的”:P mvc模型绑定器通常能很好地处理细节。你的权利可能不是OP想要的。多亏了你们,也许你可以看看上面的m编辑?postjQuery出现问题将序列化您的
list
使用。有一个示例说明如何在链接页面上序列化
数组
s。如果值为null,则表示存在模型绑定错误。下面是一个扩展方法,用于在调试中将绑定错误转储到控制台:
var list = [];
$('input.a-checkbox').each(
    function () {
        // create the list with the help of $(this).val()
        list.push($(this).val());
    }
);
var checkPostData = $(".a-checkbox").serialize();
<a class="post-checkboxes" href="#">post checkboxes</a>
<input name="[MVC viewmodel list variable name]" type="checkbox" value="1" />
<input name="[MVC viewmodel list variable name]" type="checkbox" value="2" />
$('.post-checkboxes').click(function (e) {
    e.preventDefault();
    $.post("[location to post to]", $("input:checked"));            
});