Angular $资源WebAPI FromBody澄清

时间:2015-06-02 21:51:51

标签: asp.net-web-api angularjs-resource

我的WebAPI控制器定义如下

 [Route("~/api/v1/Employees/{id}")]
        [HttpGet]
        public HttpResponseMessage GetEmployee([FromBody]int EmpID)
        {
            var emp = DB.Employees.FirstOrDefault(i => i.EmpID == EmpID) as Employee;
            return Request.CreateResponse<Employee>(HttpStatusCode.OK, emp);
        }

这是对此方法和角度服务的角度控制器调用

控制器:

$scope.Employee = EmpFactory.SingleEmployee.query({ id: ShareData.value }, { EmpID: 2 } , function (data) {
        emp = data;
    });

服务:

 SingleEmployee: $resource('/api/v1/Employees/:id', { id: '@id'}, {
            query: {
                method: 'GET'
                }            }
        )

注意:我有意在webAPI控制器中将参数名称更改为EmpID,以了解如何从Angular调用此类方法。

问题1: 它不起作用..来自Fiddler,很明显EmpID没有在请求时通过

问题2: 根据文档,我需要将data / params传递给$ resource方法,但在我的情况下,我通过控制器方法传递参数,而不直接在$ resource中指定任何东西..它是如何工作的?对不起,如果这是一个愚蠢的问题

1 个答案:

答案 0 :(得分:0)

我认为你应该标记为[FromUri],这意味着变量是在URL中设置的。