2016-09-21 73 views
1

我想让Kendo UI网格MVC工作在.net核心,从PostgreSQL数据库读取数据。kendo ui网格不能与.net核心一起工作

我建立了一个项目,将它连接到一个数据库,脚手架控制器有适当的视图,它工作正常(这意味着CRUD操作工作正常)。 现在我想把它与剑道挂钩。 我遵循kendo website指导,并成功安装(虽然它没有提供在金块pro版本,所以我不得不安装试用??)。我将所有这些CSS/JS文件_Layout.cshtml

这是我在控制器代码:

 public ActionResult kendo() 
    { 
     return View(); 
    } 

    // GET for Kendo 
    public ActionResult Categories_Read([DataSourceRequest] DataSourceRequest request) 
    { 
     return Json(GetCategories().ToDataSourceResult(request)); 
    } 

    public static IEnumerable<Category> GetCategories() 
    { 
     var result = from c in _context.Categories 
        select new Category() 
        { 
         Id = c.Id, 
         Name = c.Name 
        }; 

     return result; 
    } 

这是我在kendo.cshtml代码

@(Html.Kendo().Grid<Category>() 
.Name("grid") 
.Columns(columns => 
{ 
    columns.Bound(c => c.Id).Title("id"); 
    columns.Bound(c => c.Name); 
}) 
.HtmlAttributes(new { style = "height: 550px;" }) 
.Scrollable() 
.Groupable() 
.Sortable() 
.Pageable(pageable => pageable 
    .Refresh(true) 
    .PageSizes(true) 
    .ButtonCount(5)) 
.DataSource(dataSource => dataSource 
    .Ajax() 
    .Read(read => read.Action("Categories_Read", "Categories")) 
    .PageSize(20) 
) 

模型简单

public class Category 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
} 

问题是在剑道网格中没有显示数据。我可以在调试器中看到有前进请求和数据倒退,但网格中没有显示任何数据。

回答

2

问题很可能是由new ASP.NET Core serialization mechanism造成的。按照准则中的 “第二” 步骤4这里:

http://docs.telerik.com/kendo-ui/aspnet-mvc/mvc-core/getting-started

第4步打开Startup.cs,使用文本编辑器(IDE)和下面描述的更新。

找到ConfigureServices方法并在最后添加对services.AddKendo的调用。

public void ConfigureServices(IServiceCollection services) 
{ 
    ... 
    // Maintain property names during serialization. See: 
    // https://github.com/aspnet/Announcements/issues/194 
    services 
     .AddMvc() 
     .AddJsonOptions(options => options.SerializerSettings.ContractResolver = new DefaultContractResolver()); 

    // Add Kendo UI services to the services container 
    services.AddKendo(); 
} 

找到配置方法和在末尾添加到app.UseKendo的呼叫。

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) 
{ 
    ... 

    // Configure Kendo UI 
    app.UseKendo(env); 
} 

UPDATE

为了验证上述结构被施加,检查服务器响应,看看它是否具有用于数据如下结构和信套管和总计:

{ 
    "Data": [ 
     { "Id": "1", "Name": "Name 1" }, 
     { "Id": "2", "Name": "Name 2" } 
    ], 
    "Total": "2" 
} 
+1

谢谢,我错过了一行 '.AddJsonOptions(options => options.SerializerSettings.ContractResolver = new DefaultContractResolver());' –