我无法将数据从Web API控制器绑定到Kendo UI网格。不幸的是,我还没有找到任何这方面的例子。
这是API控制器:
public class FruitController : ApiController
{
public class Fruit
{
public string Name { get; set; }
public string Color { get; set; }
}
public IEnumerable<Fruit> GetFruits()
{
List<Fruit> list = new List<Fruit>();
Fruit f = new Fruit();
f.Name = "Apple";
f.Color = "Red";
list.Add(f);
f = new Fruit();
f.Name = "Kiwi";
f.Color = "Green";
list.Add(f);
return list;
}
}
在我的.cshtml文件中,我有:
@model IEnumerable<FruitController.Fruit>
@(Html.Kendo().Grid(Model)
.Name("Grid")
.Columns(columns =>
{
columns.Bound(p => p.Name);
columns.Bound(p => p.Color);
})
.Groupable()
.Pageable()
.Sortable()
.Scrollable()
.Filterable()
.DataSource(dataSource => dataSource
.Ajax()
.Read(read => read.Action("GetFruits", "api/Fruit").Type(HttpVerbs.Get)
)
)
)
当我运行它时,我从控制器获得了成功的JSON响应:
[{ “名称”: “苹果”, “颜色”: “红色”},{ “名称”: “猕猴桃”, “色彩”: “绿”}]
但网格中没有数据。有什么明显的东西我不见了吗?我无法弄清楚这一点!
谢谢!
答案 0 :(得分:1)
看看这些例子,它需要一个DataSourceResult。在您的控制器中包含一个执行此类操作的方法,然后它可以工作。
我正在考虑使用postsharp创建一个方面,该方面将在Kendo所需的控制器类中引入create / update / delete方法。
using Kendo.Mvc.Extensions;
public DataSourceResult Read([DataSourceRequest] DataSourceRequest request)
{
return this.Get().ToDataSourceResult(request);
}
我认为剑道没有为API控制器类提供属性/方面实际上很奇怪,但也许我错过了一些东西..
答案 1 :(得分:1)
Here是关于此主题的完整教程。希望它有所帮助
答案 2 :(得分:1)
我也遇到了让Kendo为API控制器工作的麻烦。对我来说,它可以从using Kendo.Mvc.Extensions
切换到using Kendo.DynamicLinq
。
在我的Kendo数据源中,我删除了神秘的行type: aspnetmvc-ajax
和parameterMap
。