私はこの質問が何回も尋ねられていることを知っていますが、これは異なっています。私のjsonオブジェクトがコントローラの機能に到達するとnullになる
私は剣道のgrdiを選択し、選択されていないタイプを選択している、ユーザーは自由な役割を変更して動作している。私はこのようなex31を試しましたExample1、Example2他多くの。
問題はコントローラに渡そうとしている私のjsonオブジェクトがnullになったことです。これは私が以下で試したものです。
何か間違っていると私を修正してもらえますか?
は
JsonObj Javascriptを:これは私がグリッドチェックボックス
[ { mailID: '10' , roleID: '5' , isMailSelected: 'false' } , {
mailID: '11' , roleID: '5' , isMailSelected: 'false' } , {
mailID: '19' , roleID: '9' , isMailSelected: 'false' } ]
function goToControllerSave() {
var jsonObj = displayFilterResults();
$.ajax({
url: '@Url.Action("Save", "Account")',
type: "POST",
dataType: "json",
traditional: true,
data: { myobj: jsonObj },
success: function (data) {
},
error: function (data) {
}
})
}
$(function() {
$('#Grid1').on('click', '.chkbx', function() {
var checked = $(this).is(':checked');
var grid = $('#Grid1').data().kendoGrid;
var dataItem = grid.dataItem($(this).closest('tr'));
dataItem.set('isSelected', checked);
})
})
//My json obj: this returns results on Alert
function displayFilterResults() {
var items = "[";
var dataSource = $("#Grid1").data("kendoGrid").dataSource;
var filters = dataSource.filter();
var allData = dataSource.data();
var query = new kendo.data.Query(allData);
var filteredData = query.filter(filters).data;
items = items + " { mailID: '" + item.mailID + "' , roleID: '" +
item.roleID + "' , isSelected: '" + item.isSelected + "' } ,";
});
if (items.charAt(items.length - 1) == ',') {
items = items.substr(0, items.length - 1);
}
items = items + "]";
alert(items)
return items;
}
マイconntrollerあなたが言及する例で
public class myItems
{
public string mailID { set; get; }
public string roleID { set; get; }
public string isSelected { set; get; }
}
[HttpPost]
public ActionResult Save(List<myItems> myobj)
{
--------------
--------------
}
あなたののcontrolerメソッドは、配列を期待掲載同じを持っています。おそらく 'data:{myobj:jsonObj}'を 'data:jsonObj'に変更すると役に立ちます。 – NtFreX
@NtFreX私はすでにそれを試して、それでもnullを渡します –
JavaScriptからコントローラに渡すものはstringです。最初にオブジェクト配列を作成し、JSON.stringifyを使用してJSON文字列をコントローラに送信する必要があります。 –