将选定值数组发送到控制器-MVC

Send Chosen Selected Values Array to Controller - MVC

本文关键字:控制器 -MVC 数组      更新时间:2024-06-14

因此,我有一个视图,其中包含一个选定的搜索框、一个按钮"添加"(btn默认值)和一个按钮《编辑》。当我单击Add按钮时,ajax向我发送了一个表,其中包含在所选文本框中选择的值(在本例中为函数)。

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

我不想使用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。我做错了什么?谢谢

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

假设.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. 像一样声明全局数组

    var SelectedArray = new Array();
    
  2. 当您每次在SelectedArray 中推送值时选择多个selectlist项目

    $('#ChosenId').chosen().change(function () {
    SelectedArray = $('#ChosenId').chosen().val();
    

    });

  3. 那么您的ajax数据就像

    数据:{bdoIds:SelectedArray},