2016-11-14 12 views
0

id = "send"のボタンをクリックすると、選択した行をコントローラに送信しようとしています。問題は、選択した行の値で他の値(この場合は数値と文字列)を送信しようとすると、選択された行の値がコントローラにnullを送信していますが、パラメーター。選択した行の値をコントローラに送信する際の問題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はヌル私を送っているが、他の値は

nullではありませんこれが今の私のコントローラです:

public ActionResult Index(MarcaParecido[] grid, string marcas, string destinatario) 
{...} 

私もJSON.stringifyと試みたが、それは動作しません。

答えて

1

アイテムが、サーバーに送信するキーと値のペアのコレクションである場合は、2つの追加パラメータを追加してからアイテムオブジェクトを送信し続けます。 MVCは "グリッド"を読み取る必要があります。 (あなたが今働いてきたように)コレクション内の項目のリストなどの項目、および指定した変数に、他の2つのパラメータを参照してください私をたくさん助け

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

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

おかげで、。 –

+0

なぜ私がやろうとしていたようにうまくいかなかったのか?そのようにパラメータを渡すことはできませんか? –

+0

はい、キーと値のペアを持つオブジェクトを作成しているので、コードに 'data:{items、marcas:marca、destinatario:enviarDest} 'というコードがある場合、これは基本的に3つのペアのオブジェクトを構成します。配列(プロパティ名が何であるかはわかりません)ので、うまくシリアル化されません。名前と値のペアを1つのオブジェクトに保持することによって、それは直列化され、MVCが通常POST要求を処理する方法ですべてがサーバーに転送されます。 –

関連する問題