看起来asp.net剑道MVC的新内部构建(2016.2.630)不能与剑道网格一起工作。或者至少不会从网格中的Read操作返回Json。
@(Html.Kendo().Grid<EmployeeModel>()
.Name("grid")
.Columns(columns =>
{
columns.Bound(p => p.EmployeeID).Visible(false);
columns.Bound(p => p.Name);
columns.Bound(p => p.Salary);
})
.Pageable()
.HtmlAttributes(new { style = "height:550px;" })
.DataSource(dataSource => dataSource
.Ajax()
.PageSize(20)
.Read(read => read.Action("Employees_Read", "Home"))
)
.Deferred()
)
这是控制器中的Read Action:
public ActionResult Employees_Read([DataSourceRequest] DataSourceRequest request)
{
List<EmployeeModel> employees = new List<EmployeeModel>();
employees.Add(new EmployeeModel() { EmployeeID = 1, Name = "Peter Pan", Salary = new decimal(23340.35) });
employees.Add(new EmployeeModel() { EmployeeID = 2, Name = "Little John", Salary = new decimal(25320.45)});
employees.Add(new EmployeeModel() { EmployeeID = 3, Name = "Tinkerbell", Salary = new decimal(21520.45) });
employees.Add(new EmployeeModel() { EmployeeID = 4, Name = "Captain Hook", Salary = new decimal(45320.45) });
var checkResult = employees.ToDataSourceResult(request);
return Json(checkResult);
}
与一个简单的模型:
public class EmployeeModel
{
public int EmployeeID { get; set; }
public string Name { get; set; }
public decimal Salary { get; set; }
}
网格没有显示来自Read Action的数据。这是在asp.net发布之后才出现的。Core 1.0 Core并应用最新版本2016.2.630的Kendo.MVC.
有什么解决方法吗?
这可能是因为MS将RTM位中的Json序列化更改为始终为pascalCase。你可以通过添加一个json选项来缓解这个问题,像这样:
改变services.AddMvc();
services
.AddMvc()
.AddJsonOptions(options => options.SerializerSettings.ContractResolver = new DefaultContractResolver());
直到Telerik更新了所有的javascript
From this: https://github.com/telerik/kendo-ui-core/issues/1856