所以,我有一个选择搜索框的视图,一个按钮“添加”(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接收。我做错了什么?谢谢!
答案 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)
声明全局数组,如
var SelectedArray = new Array();
每次在SelectedArray
中推送值时选择多个选择列表项$('#ChosenId').chosen().change(function () {
SelectedArray = $('#ChosenId').chosen().val();
});
然后您的ajax数据就像
数据:{bdoIds:SelectedArray},