2016-11-14 87 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請求的方式傳輸到服務器。 –

相關問題