C# 对象属性MVC控制器
我正在尝试创建一个可重用的网格,它将有一个选择勾选框,然后根据我发送的项目创建任意数量的列 我目前使用一个类来显示,该类有一个用于选择的bool和一个用于显示项目的对象 当我通过发送更新来设置是否选择了项时,项属性将作为{object}(在VS中的调试器中查看时) 是否可以将其强制转换/序列化为我可以使用的对象 我使用的是Telerik Kendo网格和数据源,Id和IsSelected填充得很好,但项没有填充 谢谢 选择项目视图模型C# 对象属性MVC控制器,c#,asp.net-mvc,telerik,kendo-grid,C#,Asp.net Mvc,Telerik,Kendo Grid,我正在尝试创建一个可重用的网格,它将有一个选择勾选框,然后根据我发送的项目创建任意数量的列 我目前使用一个类来显示,该类有一个用于选择的bool和一个用于显示项目的对象 当我通过发送更新来设置是否选择了项时,项属性将作为{object}(在VS中的调试器中查看时) 是否可以将其强制转换/序列化为我可以使用的对象 我使用的是Telerik Kendo网格和数据源,Id和IsSelected填充得很好,但项没有填充 谢谢 选择项目视图模型 public class SelectOptionViewM
public class SelectOptionViewModel
{
public string Id { get; set; }
public bool IsSelected { get; set; }
public object Item { get; set; }
}
正在调用的控制器方法
public ActionResult UpdateSelectionItem([DataSourceRequest] DataSourceRequest request,SelectOptionViewModel selectOptions, int sessionId)
{
}
视图上的网格
$("#grid").kendoGrid({
dataSource: new kendo.data.DataSource({
autoSync: true,
transport: {
read: {
url: "@Url.Action("GetSelectionItem", "MultiSelect", new { sessionId = Model.SessionId })",
type: "post"
},
update: {
url: "@Url.Action("UpdateSelectionItem", "MultiSelect", new { sessionId = Model.SessionId })",
contentType: 'application/json',
type: "post",
dataType: 'json'
},
parameterMap: function(data, type) {
return kendo.stringify(data);
},
dataType: "json",
contentType: "application/json; chartset=utf-8",
type: "GET"
},
schema: {
data: "Data",
total: "Total",
errors: "Errors",
model: { id: "Id" }
},
pageSize: 10,
serverPaging: true,
serverFiltering: true,
serverSorting: true
}),
navigatable: true,
columns : GetColumns(),
height: 550,
pageable: {
pageSize: 2
},
sortable: {
mode: "multiple",
allowUnsort: true
},
filterable : true,
pageable: {
buttonCount: 5
}
}).on('click', '.chkbx', function () {
var checked = $(this).is(':checked');
var grid = $('#grid').data().kendoGrid;
grid.closeCell();
var dataItem = grid.dataItem($(this).closest('tr'));
var col = $(this).closest('td');
grid.editCell(col);
dataItem.set(grid.columns[col.index()].field, checked);
grid.closeCell(col);
});
function GetColumns()
{
var columnList = @Html.Raw(Json.Encode(Model.Columns))
return columnList;
}
更新请求时的标题:
{"Id":"1001","IsSelected":true,"Item":{"Code":"1001","Description":"Desc"}}
显示
GetColumns()的代码
将其添加到网格底部,这只允许我发送列信息,以便动态添加itemwell列的列。字段
应为“Item.code”和“Item.Description”是此位工作正常,网格显示良好,我可以单击复选框,它将调用update方法,但当我调试到该方法中时,作为已编辑的SelectOptionViewModel的一部分发送的Item属性为{object}。正如您在更新请求中看到的,所有属性都作为请求的一部分发送,您可以看到该项被设置为具有Code和description属性。您可以将公共对象项{get;set;}
替换为公共SomeClass项{get;set;}
,然后声明类SomeClass{public string Code{get;set;}公共字符串说明{get;set;}}