2016-09-21 41 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());' –