2016-04-02 10 views
0

文字列である名前と2次元配列であるテーブルデータを送信しています そしてコントローラの名前はちゃんと得られますが、 tableDataajaxから2d配列をコントローラに送信

これは私がテーブルデータ

TABLEDATA

var tableData = new Array(); 

$('table tbody tr').each(function() { 

    var tableRow = new Array(); 

    tableRow.push({ 'id: $(this).data('id') }); 
    tableRow.push({ 'item': $(this).data('item') }); 


    tableData.push(tableRow); 
}); 

はJavaScript

var data = { Name: name, TableData: tableData }; 
$.ajax({ 
    type: 'POST', 
    url: url, 
    data: data 
}); 

コントローラ

を作成する方法であります
[HttpPost] 
    public void Add(string Name, string[][] TableData) 
    { 
      // Stuff 
    } 
+0

tableData' '内のデータは何ですか? –

+0

問題の1つは、 'id'に引用符がないことです – w35l3y

答えて

4

常にASP.NET MVCアプリケーションで、あなたのビューロジックに反映されますビューモデルを定義することによって開始することができたよう:

public class MyViewModel 
{ 
    public string Name { get; set; } 
    public Ilist<MyViewModelItem> TableData { get; set; } 
} 

public class MyViewModelItem 
{ 
    public string Id { get; set; } 
    public string Item { get; set; } 
} 

、あなたがクライアント上のデータを構築する方法を修正します。

var tableData = []; 
$('table tbody tr').each(function() { 
    tableData.push({ 
     id: $(this).data('id'), 
     item: $(this).data('item') 
    }); 
}); 

、その後、あなたは(複雑なオブジェクトを適切に限り、あなたのビューモデルは、適切な形式を尊重するように、サーバー上に結合されることを保証するために、JSONペイロードとして送信)コントローラにこの情報を送信する方法:

$.ajax({ 
    type: 'POST', 
    url: url, 
    data: JSON.stringify({ name: name, tableData: tableData }), 
    contentType: 'application/json' 
}); 

とパズルの最後のピース - お使いのコントローラのアクションの署名:

[HttpPost] 
public void Add(MyViewModel model) 
{ 
    // Stuff 
} 
関連する問題