我知道这个问题已被多次询问,但这是不同的。
我有kendo grdi,我被选中而没有选择类型,用户可以自由角色进行更改并且有效。我确实尝试过这样的例子Example1,Example2以及其他很多。
现在问题是我试图传递给控制器的json对象变为null,我这就是我在下面尝试过的。
如果我做错了,你能否纠正我?
的Javascript
JsonObj:这是我从网格复选框中取消选择的内容
[ { 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;
}
我的控制者
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)
{
--------------
--------------
}
答案 0 :(得分:1)
在你提到的例子中,json对象是一个实际的对象,而不是字符串表示。然后使用JSON.stringify()
来获取使用双引号格式化的字符串,删除备用空格等。不幸的是,MVC应用程序无法解析看起来不像这样的json。
由于您直接创建字符串,因此需要生成类似的json格式。
var json = '{"myobj":[';
json +='{mailID:"10",roleID:"5",isMailSelected:"false"},';
json+='{mailID:"11",roleID:"5",isMailSelected:"false"},';
json +='{mailID:"19",roleID:"9",isMailSelected:"false"}'
json +=']}';
$.ajax({
url: '@Url.Action("Save", "Account")',
type: "POST",
contentType: "application/json",
dataType: 'html',
data: json,
success: function (data) {
},
error: function (data) {
}
})
在课程中我更新了成员 isSelected 的名称,因为我看到它与json不匹配,我认为你把它改成isMailSelected。
public class myItems
{
public string mailID { set; get; }
public string roleID { set; get; }
public string isMailSelected { set; get; }
}
在我的控制器中,我发布了相同的内容
[HttpPost]
public ActionResult Save(List<myItems> myobj)
{
return View();
}