保存复选框选择而不使用POST

时间:2012-03-21 04:02:17

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

我正在尝试解决以下问题。

假设您在视图中有以下代码

@foreach (var x in Model)
{
    <input type="checkbox" name="IDs" value="@x.ID"  /> 
}

然后用户点击一些链接进行选择。如何将所选复选框的ID传递给控制器​​。

例如,您有以下链接

@Html.ActionLink("Do Something", "ActionName", new { selection = ???? // i dont know how i reference the checke boxes })

我知道我可以将循环放在Html开始表单中,并使链接成为提交按钮,但这是我试图解决的问题的摘要。在实际应用程序中,我无法将链接转换为按钮。

如果可能,我宁愿不使用JavaScript。

3 个答案:

答案 0 :(得分:1)

我不知道有一种方法可以用典型的MVC助手来做到这一点。我在过去做的是创建链接,以便它被称为自定义jquery函数,它将选择所有选中类型复选框的输入,然后创建一个要发回的列表。

这样的事情:

$(
    $('#anchorid').click(function()
        {
            SubmitCheckBoxes();
        });
);

function SubmitCheckBoxes()
{
    var list = {};
    $(input[type="checkbox"]:checked).each(
        function() 
        {
            var identifier = $(this).attr('for');
            if(identifier == undefined)
                identifier = $(this).attr('name');
            if(list[identifier])
                list[identifier].push($(this).val());
            else
                list[identifier] = [$(this).val()];
        });
    //This must be here to make any json array not have brackets.
    //MVC binding will not work otherwise
    jQuery.ajaxSettings.traditional = true;
    $.post("./ActionName", list, function(data){//do something on response});
}

答案 1 :(得分:0)

您可以轻松地将所选复选框的值存储在数组中,同时勾选/取消选中它们。 即。

$(function(){
  $('#btnClick').click(function(){
    var values = [];
    $(':checkbox:checked').each(function(i){
      values[i] = $(this).val();
    });
  });
});

并且在您准备就绪时,您可以挂钩链接并执行直接发布,并将“值”作为参数传递给jquery post方法。

答案 2 :(得分:0)

要在不使用JavaScript的情况下将数据提交给控制器,您需要使用HTML表单提交。有许多选项,例如按钮,提交类型的输入或表单中类型图像的输入。您可以使用图像来显示链接的外观,但这可能并不理想。

如果你不能使用提交/图像的按钮或输入,那么JavaScript可能是你的下一个最佳选择。

你有什么理由不能使用按钮或JavaScript吗?