複数選択機能を使用して複数の行を選択し、コントローラーに渡します。javascriptは以下のとおりです。
onClickButton: function (ids) {
var grid = $("#employee");
var rowid = grid.jqGrid('getGridParam', 'selarrrow');
var count = rowid.length;
var rowData;
var colData = [];
for (var i = 0; i < count; i++) {
rowData = $("#employee").getRowData(rowid[i]);
colData[i] = rowData.ID;
}
$.ajax({
type: 'POST',
url: '/Home/Create/' + colData,
//data: { id: colData },
dataType: "json"
});
}
私のコントローラーのアクションは以下のとおりです。
public ActionResult Create(string id){
JavaScriptSerializer ser = new JavaScriptSerializer();
var myList = ser.Deserialize<List<string>>(id);}
colDataを配列として作成し、現在4つのID(“ 102,103,104,105”)を追加しています。colDataをデバッグして確認すると、「102,103,104,105」が含まれています。次に、それを文字列としてコントローラーアクションに渡し、逆シリアル化します。デシリアライズすると、「無効なJSONプリミティブ:103,104,105」と文句を言います。
他の投稿を見たことがありますが、私の問題に関連するものは見つかりませんでした。「data:{id:colData}」を使用してcolDataを渡すと、idはnullとして返されます。
この問題を理解するのを手伝ってください、私はこれで立ち往生しているのは久しぶりです。どんな提案でも大歓迎です。