【问题标题】:ASP.NET WebAPI KendoUI can't update or delete data, 404 (Not Found)ASP.NET WebAPI KendoUI 无法更新或删除数据,404(未找到)
【发布时间】:2014-08-24 08:40:50
【问题描述】:

我将 ASP.NET WebApi 与 KendoUI 结合使用。 Json 成功显示在网格中,因此 GET 有效。但我不能更新、创建或删除数据。路由有问题。

    @(Html.Kendo().Grid<User>()
      .Name("Grid")
      .EnableCustomBinding(false)
      .Columns(columns =>
      {
          columns.Bound(u => u.UserName);
          columns.Bound(u => u.FullName);
          columns.Bound(u => u.Email);
          columns.Bound(u => u.Address);
          columns.Bound(u => u.Phone);
          columns.Command(c =>
          {
              c.Edit();
              c.Destroy();
          });
      })
      .ToolBar(tools => tools.Create())
      .Sortable()
      .Pageable()
      .Filterable()
      .DataSource(dataSource => dataSource
        .Ajax()
            .Model(model =>
                {
                    model.Id(u => u.Id);
                    model.Field(u => u.Id).Editable(false);
                })
                .Events(events => events.Error("error_handler"))
            .Read(read => read.Url(Url.HttpRouteUrl("DefaultApi", new{controller="users"})).Type(HttpVerbs.Get))
            .Create(create => create.Url(Url.HttpRouteUrl("DefaultApi", new{controller="users"})).Type(HttpVerbs.Post))
            .Update(update => update.Url(Url.HttpRouteUrl("DefaultApi", new{controller="users"})).Type(HttpVerbs.Put))
            .Destroy(destroy => destroy.Url(Url.HttpRouteUrl("DefaultApi", new{controller="users"})).Type(HttpVerbs.Delete))
      )
      )

<script type="text/javascript">
    $(function () {
        var grid = $("#Grid").data("kendoGrid");

        grid.dataSource.transport.options.update.url = function (data) {
            return "api/users/" + data.Id;
        };

        grid.dataSource.transport.options.destroy.url = function (data) {
            return "api/users/" + data.Id;
        };
    });
</script>

Chrome 给我一个 404(未找到)错误:“DELETE http://localhost:6128/Home/api/users/2 404 (Not Found)”。如何在不带 Home 前缀的情况下将 url 更改为“http://localhost:6128/api/users/2”?

【问题讨论】:

    标签: asp.net-mvc-4 kendo-asp.net-mvc asp.net-web-api-routing


    【解决方案1】:

    只需将您的routeconfig.cs 修改为:

     public static void Register(HttpConfiguration config)
     {
       config.Routes.MapHttpRoute((
                name: "Default",
                routeTemplate: "api/{action}/{id}",  <---Change this only
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }  //this will remain same as there in your config file.
            );
     }
    

    【讨论】:

    • 修改后出现错误 HTTP 403.14 - Forbidden
    • @votek..肯定是其他地方有问题,仔细检查一下..家庭控制器内必须有名为“用户”的操作
    猜你喜欢
    • 1970-01-01
    • 2019-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-15
    • 2020-03-18
    相关资源
    最近更新 更多