Asp.net mvc 4 ASP.NET WebAPI KendoUI can';t更新或删除数据,404(未找到)
我正在与KendoUI一起使用ASP.NET WebApi。Json成功地显示在网格中,所以GET works。但我不能更新、创建或删除数据。路由有问题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);
@(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一定是其他地方出了问题,请仔细检查。主控制器中必须有名为“用户”的操作