MVC 3通过ajax将多个int / collection传递给控制器

时间:2012-10-09 06:17:37

标签: asp.net-mvc asp.net-mvc-3 asp.net-ajax

在我的表单上,我有几个同名的隐藏字段(RemoveId)

<input type="hidden" value="1" name="RemoveId" />
<input type="hidden" value="2" name="RemoveId" />
<input type="hidden" value="3" name="RemoveId" />
<input type="hidden" value="4" name="RemoveId" />
<input type="hidden" value="5" name="RemoveId" />

我想通过ajax / json将检查项(int(s))传递给控制器​​

我怎么办? 感谢

2 个答案:

答案 0 :(得分:2)

这里应该有所帮助

在名称“RemoveId”上使用getElementsByName将为您提供一个数组

var list = document.getElementsByName("RemoveId");

var arrId = [];

for (var i = 0; i < list.length; i++) {
    arrId.push(list[i].value);
}

将准备好的id列表传递给控制器​​

$(function(){
    $.ajax({
       type: "POST",
       url: "@Url.Action("PostArray")" %>",
       data: {idArray: arrId},
       dataType: "json",
       success: function(msg){console.log(msg)}
    });
})

以下是您的控制器应该是什么样子

[HttpPost]
public ActionResult PostArray(int[] idArray)
{
    // do your thing..
}

答案 1 :(得分:2)

尝试这样做:

<input type="hidden" value="1" name="RemoveId" />
<input type="hidden" value="2" name="RemoveId" />
<input type="hidden" value="3" name="RemoveId" />
<input type="hidden" value="4" name="RemoveId" />
<input type="hidden" value="5" name="RemoveId" />


<input type="button" value="do" class="send" />

<script type="text/javascript" >
    $(function () {
        $(".send").click(function () {
            var myValues = [];
            $("[name = 'RemoveId']").each(function (index, element) {
                myValues.push($(element).val());

            });
            $.ajax({
                type: "POST",
                url: "/Home/Method",
                data: { myValues: myValues }
            });
        });

    })
</script>



        [HttpPost]
        public ActionResult Method()
        {
            var b = Request["myValues[]"].Split(',').ToList();
            return null;
        }