Asp.net mvc 4 ASP.NET WebAPI KendoUI can';t更新或删除数据,404(未找到)

Asp.net mvc 4 ASP.NET WebAPI KendoUI can';t更新或删除数据,404(未找到),asp.net-mvc-4,kendo-asp.net-mvc,asp.net-web-api-routing,Asp.net Mvc 4,Kendo Asp.net Mvc,Asp.net Web Api Routing,我正在与KendoUI一起使用ASP.NET WebApi。Json成功地显示在网格中,所以GET works。但我不能更新、创建或删除数据。路由有问题 @(Html.Kendo().Grid<User>() .Name("Grid") .EnableCustomBinding(false) .Columns(columns => { columns.Bound(u => u.UserName);

我正在与KendoUI一起使用ASP.NET WebApi。Json成功地显示在网格中,所以GET works。但我不能更新、创建或删除数据。路由有问题

    @(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>
@(Html.Kendo().Grid())
.名称(“网格”)
.EnableCustomBinding(false)
.列(列=>
{
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、 编辑();
c、 破坏();
});
})
.ToolBar(tools=>tools.Create())
.Sortable()
.Pageable()
.可过滤()
.DataSource(DataSource=>DataSource
.Ajax()
.Model(Model=>
{
model.Id(u=>u.Id);
model.Field(u=>u.Id).可编辑(false);
})
.Events(Events=>Events.Error(“错误处理程序”))
.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))
)
)
$(函数(){
var grid=$(“#grid”).data(“kendoGrid”);
grid.dataSource.transport.options.update.url=函数(数据){
返回“api/users/”+data.Id;
};
grid.dataSource.transport.options.destroy.url=函数(数据){
返回“api/users/”+data.Id;
};
});

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

只需将您的
路由图.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.
        );
 }
公共静态无效寄存器(HttpConfiguration配置)
{
config.Routes.MapHttpRoute((
名称:“默认”,

routeTemplate:“api/{action}/{id}”,修改后出现错误HTTP 403.14-Forbidden@votek..there一定是其他地方出了问题,请仔细检查。主控制器中必须有名为“用户”的操作