【问题标题】:KendoUI Grid with MVC Wrappers and Web API带有 MVC Wrappers 和 Web API 的 KendoUI Grid
【发布时间】:2013-11-07 16:35:39
【问题描述】:

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

【问题讨论】:

  • 我可能是错的,但我不相信服务器端 Kendo UI 包装器支持 WebApi 调用。您必须改用 Kendo UI 的 JavaScript 实现。
  • @Brett 他们确实支持 WebApi 调用,并发布了一个演示项目来展示这一点:kendoui.com/code-library/mvc/grid/…
  • 另外,在这个演示项目中,我可以复制问题。我将通过 Telerik 支持记录它。
  • 嗯,好的。我知道在早期版本中他们没有这种支持,但我很高兴他们添加了它。希望您的问题得到解决。

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


【解决方案1】:

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

.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答案。

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 他希望他的 Kendo UI 服务器包装器调用名为 ProjetMilestone 的 WebApi 控制器。您的建议是他创建了一个名为“api”的 MVC 控制器。这是错误的。
    • 我并不是建议他创建一个控制器。该重载只是将字符串连接在一起。所以,如果你说,myserver/myarea/something 并且你的视图有 .Read(read => read.Action("ProjectMilestone", "api"),那么 AJAX 请求将有 url myserver/myarea/api/ProjectMilestone
    猜你喜欢
    • 1970-01-01
    • 2014-05-03
    • 1970-01-01
    • 2014-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-07
    • 2023-03-11
    相关资源
    最近更新 更多