将选择的选定值数组发送到Controller - MVC

时间:2015-02-27 12:16:52

标签: javascript jquery asp.net ajax asp.net-mvc

所以,我有一个选择搜索框的视图,一个按钮“添加”(btn-default)和一个按钮“编辑”(面包屑)。当我单击Add按钮时,ajax向我发送了一个表,其中包含在所选文本框中选择的值(在本例中为funcionaries)。

我希望,当我点击“编辑”按钮时,将所选值(可以是一个或数百个值)发送到另一个控制器以返回另一个视图。

不想使用ajax,因为我想完全使用新视图。

在控制器端,当我用javascript发送数据时,我总是得到null。为什么呢?

查看

<script>
$(document).ready(function () {
    $(".btn-default").on("click", function (event, params) {

        $.ajax({
            url: '@Url.Action("EditarPonderacoesEspecial", "Sorteios")',
            type: 'POST',
            dataType: 'html',
            cache: false,
            traditional: true,
            data: { bdoIds: $(".chosen-select").val() },
            success: function (responseText, textStatus, XMLHttpRequest) {
                $("#MyDiv").empty();
                $("#MyDiv").html(responseText);
            },
            error: function () { }
        })
    });

    $(".breadcrumb").on("click",function (event, params) {
            bdoIds = $(".chosen-select").val();
            $.post("/Sorteios/EditarPonderacoesEspecialSecond/", bdoIds);
    });
});

控制器

public ActionResult EditarPonderacoesEspecialSecond(string[] bdoIds)
{ 
    //do whatever I want with the bdoIds
    return View();
}

我尝试了很多种方法,但控制器总是将参数作为null接收。我做错了什么?谢谢!

2 个答案:

答案 0 :(得分:1)

您的控制器操作需要一个字符串数组。

假设.chosen-select是一个选择列表,因为问题中缺少该部分。

首先将选定的值读入对象,如下所示:

var selectedValues = [];
$(".chosen-select :selected").each(function() {
  selectedValues.push($(this).attr('value'));
});

然后按如下方式发送:

$(".breadcrumb").on("click",function (event, params) {
    var selectedValues = [];

    $(".chosen-select :selected").each(function() {
           selectedValues.push($(this).attr('value'));
    });

   $.post("/Sorteios/EditarPonderacoesEspecialSecond/", { bdoIds: selectedValues  });
});

答案 1 :(得分:0)

  1. 声明全局数组,如

    var SelectedArray = new Array();
    
  2. 每次在SelectedArray

    中推送值时选择多个选择列表项
    $('#ChosenId').chosen().change(function () {
    SelectedArray = $('#ChosenId').chosen().val();
    

    });

  3. 然后您的ajax数据就像

    数据:{bdoIds:SelectedArray},