带有MVC Wrappers和Web API的KendoUI Grid

时间:2013-11-07 16:35:39

标签: kendo-ui asp.net-web-api kendo-asp.net-mvc

我正在使用带有ASP.Net MVC Wrappers的Kendo UI网格。我的网格数据源定义如下:

.DataSource(dataSource => dataSource
        .Ajax()
            .Model(model =>
            {
                model.Id(p => p.Code);
            })
            .Read(read => read.Url("api/ProjectMilestone").Type(HttpVerbs.Get))
            .Create(create => create.Url("api/ProjectMilestone").Type(HttpVerbs.Post))
            .Update(update => update.Url("api/ProjectMilestone").Type(HttpVerbs.Put))
            .Destroy(destroy => destroy.Url("api/ProjectMilestone").Type(HttpVerbs.Delete))
      )

因此可以预期GET url将生成为[server]/[app]/api/ProjectMilestone

但就我而言,托管网格的页面位于以下网址:[server]/[app]/Project。 这导致GET url生成为[server]/[app]/Project/api/ProjectMilestone,当然服务器返回错误404未找到。

请告诉我如何将生成的GET网址生成为[server]/[app]/api/ProjectMilestone

2 个答案:

答案 0 :(得分:2)

原来正确的方法是定义数据源如下:

.Read(read => read.Url(Url.RouteUrl("DefaultApi", new { httproute ="", controller="ProjectMilestone" })).Type(HttpVerbs.Get))
.Create(create => create.Url(Url.RouteUrl("DefaultApi", new { httproute ="", controller="ProjectMilestone" })).Type(HttpVerbs.Post))
.Update(update => update.Url(Url.RouteUrl("DefaultApi", new { httproute ="", controller="ProjectMilestone" })).Type(HttpVerbs.Put))
.Destroy(destroy => destroy.Url(Url.RouteUrl("DefaultApi", new { httproute ="", controller="ProjectMilestone" })).Type(HttpVerbs.Delete))

取自this回答。

答案 1 :(得分:0)

您是否尝试过使用“api”作为控制器的控制器名称和操作以及“ProjectMilestone”作为操作的重载?