发生了一件奇怪的事......我并不理解为什么...... 仅当将id参数类型从int更改为object时,此帖子才能。
我知道最好的方法是在网址中设置值...但是我试图避免这个...我的偏好是将值发布为json
public IHttpActionResult Gettest(int id)=不要工作!
{"消息":"未找到与请求URI匹配的HTTP资源' http://localhost:23052/api/testAPI/Gettest'。"," MessageDetail":"在控制器上没有找到任何操作' testAPI'与请求匹配。"}
public IHttpActionResult Gettest(object id)= it works
这很不错
我做错了什么?....我试图从" id"更改参数名称到" x"在服务器/客户端,我得到了相同的结果。
config.Routes.MapHttpRoute("DefaultActionApi", "api/{controller}/{action}/{id}", new { id = RouteParameter.Optional });
WebApiConfig.cs
[HttpPost]
public IHttpActionResult Gettest(int id)
{
test test = db.tests.Find(id);
if (test == null)
{
return NotFound();
}
return Ok(test);
}
testAPIController.cs
$http.post("/api/testAPI/Gettest", id)
.success(function (result) {
$scope.test = result;
}).error(function (result) {
console.log(result);
});
角柱
答案 0 :(得分:0)
将您的$ http请求更改为以下。无需编写动作方法名称,它只会被控制器名称调用。 Web api基于HTTP VERBS工作,因此只需用以下代码替换您的请求:
$http.post("/api/testAPI/"+ id)
.success(function (result) {
$scope.test = result;
}).error(function (result) {
console.log(result);
});