2016-11-14 37 views
0

我试图将选定的行发送到控制器,当我点击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尝试过,但它不工作。

回答

1

如果项目是要发送给服务器的键/值对的集合,请将两个附加参数添加到该项,然后继续将项目对象发送给项目。 MVC应该阅读“网格”。项目作为集合中的项目列表(正如您现在正在工作),并在您指定的变量中查看其他两个参数:

items["marcas"] = marca; 
items["destinatario"] = enviarDest; 

$.ajax({ 
    . 
    . 
    data: items 
+0

谢谢,这对我有很大的帮助。 –

+0

任何想法为什么不按我想要做的方式工作?这种方式不可能传递参数吗? –

+0

是的,因为你用键/值对创建一个对象,但是当代码有'data:{items,marcas:marca,destinatario:enviarDest}'时,这基本上构造了3对对象,第一对是数组(不知道属性名称是什么),因此不能很好地序列化。通过将名称/值对保留在一个对象中,它可以很好地序列化,然后将所有内容以MVC通常处理POST请求的方式传输到服务器。 –

相关问题