【发布时间】:2017-06-21 15:43:01
【问题描述】:
当我将数据源设置为 WebAPI 绑定时,控制器上会调用 HTTP GET 并返回正确的数据。问题是我的剑道网格没有正确绑定数据,结果我得到一个空网格。
@(Html.Kendo().Grid(Model)
.Name("Accounts")
.Columns(columns =>
{
columns.Bound(c => c.Description).Title("Account Name");
columns.ForeignKey(c => c.Type, (System.Collections.IEnumerable)ViewData["accountTypes"], "Id", "Name").Title("Account Type");
columns.ForeignKey(c => c.Currency, (System.Collections.IEnumerable)ViewData["currencyTypes"], "Id", "Name").Title("Account Currency");
columns.Command(command => { command.Edit(); command.Destroy(); }).Width(210);
})
.Sortable(sortable =>
{
sortable.SortMode(GridSortMode.SingleColumn);
sortable.AllowUnsort(false);
})
.Pageable(pageable => pageable
.Refresh(true)
.PageSizes(true)
.ButtonCount(5)
)
.ToolBar(toolbar => { toolbar.Create(); })
.Editable(editable => editable.Mode(GridEditMode.InLine))
.DataSource(dataSource => dataSource
.WebApi()
.Model(model =>
{
model.Id(p => p.Id);
model.Field(p => p.Currency).DefaultValue(0).Editable(true);
model.Field(p => p.Description).Editable(true);
model.Field(p => p.Type).Editable(true);
})
.ServerOperation(true)
.Read(read => read.Action("Get", "Accounts"))
.Create(create => create.Action("Post", "Accounts"))
.Update(update => update.Action("Put", "Accounts", new { id = "{0}" }))
.Destroy(destroy => destroy.Action("Delete", "Accounts", new { id = "{0}" }))
.PageSize(10)
)
)
控制器
// GET: api/values
[HttpGet]
public DataSourceResult Get([DataSourceRequest]DataSourceRequest request)
{
return _context.Accounts.ToDataSourceResult(request);
}
由于分页或排序命令,我总是得到 HTTP 200 OK,但之后网格为空。剑道生成的网址是:
http://localhost:58829/Accounts/Get?sort=&page=1&pageSize=10&group=&filter=
当我用浏览器打开它时,它实际上会返回 JSON。
【问题讨论】:
-
您是否尝试过转换使用
Json()返回的数据?即return Json(_context.Accounts.ToDataSourceResult(request));并将您的控制器功能更改为public ActionResult Get([DataSourceRequest]DataSourceRequest request).. -
@Sandman,结果相同
-
如果在对控制器进行上述更改的同时,将网格
DataSource修改如下。将WebApi()替换为Ajax()并设置.ServerOperation(false)。如果这仍然不能解决问题,请考虑使用从控制器方法返回的数据结构更新您的问题。
标签: c# asp.net-mvc asp.net-web-api kendo-ui kendo-asp.net-mvc