gpt4 book ai didi

c# - jQuery 与 WebApi 一起使用 - 甚至不调用 Controller 方法

转载 作者:可可西里 更新时间:2023-11-01 08:05:12 25 4
gpt4 key购买 nike

很抱歉在问了另一个问题后这么快就问了这个问题,但我现在正在为 PUT 苦苦挣扎。

我有一个 jQuery 方法,它收集数据并将其传递给值 Controller 中的 PUT 函数。但是 Controller 甚至没有被调用(因为我在它上面有一个断点并且它没有中断)

我可以只检查我的 jQuery 是否正确吗?

var data = {
id: truckId,
obj: {
TruckId: truckId,
Reg: reg,
Description: desc,
Condition: condition
}
};
var json = JSON.stringify(data)

$.ajax({
url: '/api/Values',
type: 'PUT',
contentType: "application/json; charset=utf-8",
data: json,
success: function (results) {
$.getJSON("api/Values", LoadTrucks);
alert('Truck Updated !');
}
})

Controller 看起来像这样:

public void Put(int id, TruckInfo obj)
{
WebApiTestEntities db = new WebApiTestEntities();

var data = from item in db.TruckInfoes
where item.TruckId == id
select item;
TruckInfo oldRecord = data.SingleOrDefault();
oldRecord.Reg = obj.Reg;
oldRecord.Description = obj.Description;
oldRecord.Condition = obj.Condition;
db.SaveChanges();
}

现在在我看来至少应该到达 Controller 。我的猜测是参数没有正确传递,因此它正在寻找一种不同的方法,但我看不出为什么或如何纠正它。

任何帮助将不胜感激:)

莱克斯

编辑:根据要求,提供更多信息。

错误控制台上没有 Javascript 错误。

控制台日志显示如下:

{"Message":"No HTTP resource was found that matches the request URI 'localhost:62997/api/Values'.","MessageDetail":"No action was found on the controller 'Values' matching the request ”

在 JSON 控制台的 MessageDetail 下,我得到了这个(我认为这支持我关于不正确参数的理论)

“在 Controller ‘Values’上找不到与请求匹配的操作”

但是 get 成功了。 (还有我今天早上早些时候开始工作的 POST。)

最佳答案

像下面这样更改您的代码,然后它将正常工作:

var data = {
TruckId: truckId,
Reg: reg,
Description: desc,
Condition: condition
};

var json = JSON.stringify(data)

$.ajax({
url: '/api/Values/' + truckId,
type: 'PUT',
contentType: "application/json; charset=utf-8",
data: json,
success: function (results) {

}
})

使用 REST 时的最佳实践是:

  1. 创建新资源时使用 POST。
  2. 更新现有资源时的用户 PUT 和资源的 Id 应该在 URL 中。
  3. 删除现有资源时用户DELETE,资源的Id也应该在查询字符串中。

关于c# - jQuery 与 WebApi 一起使用 - 甚至不调用 Controller 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15087622/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com