这里的问题是什么? webapi + angular + post

时间:2017-01-03 02:55:52

标签: c# angularjs asp.net-mvc asp.net-web-api

发生了一件奇怪的事......我并不理解为什么...... 仅当将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);
    });

角柱

1 个答案:

答案 0 :(得分:0)

将您的$ http请求更改为以下。无需编写动作方法名称,它只会被控制器名称调用。 Web api基于HTTP VERBS工作,因此只需用以下代码替换您的请求:

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