用jquery创建一个列表,并将其发布到asp.net mvc

本文关键字:mvc net asp 创建 jquery 列表 一个 | 更新日期: 2023-09-27 18:17:16

我正在寻找一种方法来存储给定类的所有现有复选框的值到某种列表或数组,并通过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"

如果我的MVC控制器能像这样就好了

public JsonResult SaveList(List<String> values) { //... }

我知道我可以通过以下方式访问复选框

 $('input.a-checkbox').each(
    function () {
        // create the list with the help of $(this).val()
    }
 );
 // jquery post would happen here

但是我不知道如何创建这样的数据结构。你能帮我吗?

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

var list = [];
            $('a-checkbox').each(
                function () {
                    list.push($(this).val());
                }
            );
            $.ajax({
                type: "POST",
                url: myUrl,
                data: list,
                success: function (data) {
                    alert(data.Result);
                },
                dataType: "json",
                traditional: true
            });

用jquery创建一个列表,并将其发布到asp.net mvc

这将把所有checkbox值(value属性)放入Array:

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();
http://api.jquery.com/serialize/

我有同样的问题在我的MVC模式和所有。我发现使用$("input:checked")作为我的数据,而不是试图提取值到js中的数组工作得更好,我通过给我的复选框名称值修复了null问题,因为MVC绑定在输入名称上。

HTML

<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" />
Javascript

$('.post-checkboxes').click(function (e) {
    e.preventDefault();
    $.post("[location to post to]", $("input:checked"));            
});