0

在我的表单上,我有几个同名的隐藏字段(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))传递给控制器

我该怎么做?谢谢

4

2 回答 2

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..
}
于 2012-10-09T06:33:46.070 回答
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;
        }
于 2012-10-09T07:12:24.257 回答