这里的问题是什么?WebAPI + Angular + POST。

4
有些奇怪的事情正在发生......我真的不明白为什么....只有将id参数类型从int更改为object,这篇文章才能正常工作。
我知道最好的方法是在url中设置值...但是我试图避免这件事...我的偏好是将值作为json发布。 public IHttpActionResult Gettest(int id) = 不起作用!
{"Message":"No HTTP resource was found that matches the request URI 'http://localhost:23052/api/testAPI/Gettest'.","MessageDetail":"No action was found on the controller 'testAPI' that matches the request."} public IHttpActionResult Gettest(object id) = 它可以工作
这个运行得很好
我做错了什么?....我试图在服务器/客户端上将参数名称从"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);
    });

Angular 发布


1
你可以尝试使用 int?,会怎样呢? - juharr
它没起作用... :S ... 我刚刚尝试了 - Jorge Solano
更改为公共的 IHttpActionResult Gettest([FromUri] int id)。 - Chirdeep Tomar
它没起作用...唯一让它工作的方法...就是将类型从int改为object.... #LOL - Jorge Solano
@JorgeSolano,你能否尝试一下我下面建议的方法?应该可以解决问题。 - Pankaj Parkar
1个回答

0

将您的 $http 请求更改为以下内容。无需编写操作方法名称,它将仅由控制器名称调用。Web API 基于 HTTP 动词工作,因此只需用以下代码替换您的请求:

$http.post("/api/testAPI/"+ id)
        .success(function (result) { 
            $scope.test = result;
        }).error(function (result) {
            console.log(result);
        });

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接