将选定行值发送到控制器的问题MVC
问题描述:
我试图将选定的行发送到控制器,当我点击ID =“发送”按钮。问题是,当我试图用选定的行值发送其他值(在本例中是一个数字和一个字符串)时,选定的行值向控制器发送空值,但控制器中的数字和字符串不为空参数。将选定行值发送到控制器的问题MVC
这是我的javascript代码如果我发送所选行的值是正常工作:
$('#send').click(function() {
var items = {};
var grid = $('#grid').data('kendoGrid');
var selectedElements = grid.select();
for (var j = 0; j < selectedElements.length; j++) {
var item = grid.dataItem(selectedElements[j]);
items['grid[' + j + '].ParecidoCodigo'] = item.ParecidoCodigo;
}
$.ajax({
url: '@Url.Action("Index", "Busqueda")',
type: "POST",
async: false,
data: items,
success: function (result) {
console.log(result);
}
})
})
,这是我的控制器方法操作:
public ActionResult Index(MarcaParecido[] grid)
{ ... }
一切正常,直到now.But当我试图发送像这样的另一个值:
$('#send').click(function() {
var items = {};
var grid = $('#grid').data('kendoGrid');
var selectedElements = grid.select();
var enviarDest = $('#destinatario').val();
var marca = $('#numMarca').val();
for (var j = 0; j < selectedElements.length; j++) {
var item = grid.dataItem(selectedElements[j]);
items['grid[' + j + '].ParecidoCodigo'] = item.ParecidoCodigo;
}
$.ajax({
url: '@Url.Action("Index", "Busqueda")',
type: "POST",
async: false,
data: { items, marcas: marca, destinatario: enviarDest },
success: function (result) {
console.log(result);
}
})
})
选定的行值ES是给我空,但其他值不为空
这是我现在的控制器:
public ActionResult Index(MarcaParecido[] grid, string marcas, string destinatario)
{...}
我JSON.stringify尝试过,但它不工作。
答
如果项目是要发送给服务器的键/值对的集合,请将两个附加参数添加到该项,然后继续将项目对象发送给项目。 MVC应该阅读“网格”。项目作为集合中的项目列表(正如您现在正在工作),并在您指定的变量中查看其他两个参数:
items["marcas"] = marca;
items["destinatario"] = enviarDest;
$.ajax({
.
.
data: items
谢谢,这对我有很大的帮助。 –
任何想法为什么不按我想要做的方式工作?这种方式不可能传递参数吗? –
是的,因为你用键/值对创建一个对象,但是当代码有'data:{items,marcas:marca,destinatario:enviarDest}'时,这基本上构造了3对对象,第一对是数组(不知道属性名称是什么),因此不能很好地序列化。通过将名称/值对保留在一个对象中,它可以很好地序列化,然后将所有内容以MVC通常处理POST请求的方式传输到服务器。 –