Angular post将数据发送到webapi为null

时间:2015-04-05 07:06:07

标签: angularjs html5 asp.net-mvc-4 asp.net-web-api

我不知道我在我的代码中做错了什么我试图向webapi控制器发送一些值加热断点调用正确的方法但总是我得到参数为null。 我试过JSONStringfy 设置标题和许多方法,但仍然都失败

以下是角度方法的一些代码片段

$http.post('/api/EmployeeData/' + p.EmpNo, JSON.stringify(p))
  .success(function(data) {
    Alert(ok)
}).error(function(data, status, headers, config) {
    data;
});

其他方式

$http({
    url: '/api/EmployeeData/' + p.EmpNo,
    data: JSON.stringify(p), //or this as well p,// or {Employee: p},
    headers: {
        'Content-Type': 'application/x-www-form-urlencoded'
    } //or {'Content-Type': 'application/json'}
})('/api/EmployeeData/' + p.EmpNo, JSON.stringify(p)).success(function(data) {
    Alert(ok)
}).error(function(data, status, headers, config) {
    data;
});

API控制器的代码段

 public HttpResponseMessage PostEmployee([FromBody] Employee employee) {

    if (ModelState.IsValid) {
        db.Employees.Add(employee);
        db.SaveChanges();

        HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.Created, employee);
        response.Headers.Location = new Uri(Url.Link("DefaultApi", new {
            id = employee.EmpNo
        }));
        return response;
    } else {
        return Request.CreateResponse(HttpStatusCode.BadRequest);
    }
 }

**但我仍然将Employee视为null,即使我将参数类型更改为字符串**

HttpResponseMessage to IHttpActionResult

但仍然相同

我不知道我做了什么错,任何建议都会非常明显。

提前致谢

1 个答案:

答案 0 :(得分:0)

不是' p'已经是json?不需要JSON.stringify:

$http.post('/api/EmployeeData/'+ p.EmpNo, p)

此外,您的PostEmployee方法缺少[HttpPost]属性。