1

我正在使用带有 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.

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

请告诉我如何生成 GET url [server]/[app]/api/ProjectMilestone

4

2 回答 2

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))

取自这个答案。

于 2013-11-08T16:07:58.677 回答
0

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

于 2013-11-07T19:06:10.863 回答