asp.net mvC语言 asp.net.Core 1.0 RTM剑道网格不显示数据



看起来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

最新更新