2016-07-01 6 views
4

Sieht aus wie der neue interne Build (2016.2.630) für ASPNet Kendo MVC funktioniert nicht mit dem Kendo Grid. Oder zumindest nicht mit dem Zurückgeben von Json von einer Leseaktion im Raster.ASPNet.Core 1.0 RTM Kendo Grid zeigt keine Daten an

@(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() 

)

Dies ist der Lesevorgang in der Steuerung:

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); 
    } 

Mit einem einfachen Modell:

public class EmployeeModel 
{ 
    public int EmployeeID { get; set; } 
    public string Name { get; set; } 
    public decimal Salary { get; set; } 
} 

das Gitter nicht die Daten von der Leseaktion zeigt . Dies ist erst seit der Veröffentlichung von AspNet.Core 1.0 Core und der neuesten Version 2016.2.630 von Kendo.MVC.

Gibt es eine Problemumgehung dafür?

Antwort

11

Dies ist wahrscheinlich, weil MS JSC Serialisierung in den RTM-Bits immer PascalCase geändert wird. Sie können dies wahrscheinlich mildern, indem eine json Option wie folgt ergänzt:

Änderung

services.AddMvc(); 

zu

services 
     .AddMvc() 
     .AddJsonOptions(options => options.SerializerSettings.ContractResolver = new DefaultContractResolver()); 

bis Telerik aktualisiert alle JavaScripts

Daraus: https://github.com/telerik/kendo-ui-core/issues/1856

+4

Wenn ich das nur vor 4 Stunden gefunden hätte, würde ich es tun habe immer noch Haare. Vielen Dank Neodim! –

+3

Es ist in der Setup-Anleitung (http://docs.telerik.com/aspnet-core/getting-started/getting-started), aber immer noch erwischt mich. – paulio

+1

Wenn ich dich gewusst hätte, hätte ich dir 100 Bier gekauft :) Ich bin überrascht, dass ich diesen Schritt verpasst habe, als ich das Projekt aufstellte !! – k25