Angularjs 角度post将数据以null形式发送到webapi

Angularjs 角度post将数据以null形式发送到webapi,angularjs,html,asp.net-mvc-4,asp.net-web-api,Angularjs,Html,Asp.net Mvc 4,Asp.net Web Api,我不知道我在代码中做错了什么,我试图向webapi控制器发送一些值,它通过调用正确的方法来设置断点,但我总是将参数设置为null。 我试过用JSONStringfy 设置标题和许多方法,但都失败了 下面是angular方法的一些代码片段 $http.post('/api/EmployeeData/' + p.EmpNo, JSON.stringify(p)) .success(function(data) { Alert(ok) }).error(function(data, sta

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

下面是angular方法的一些代码片段

$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
但还是一样

我不知道我做错了什么,任何建议都是值得赞赏的


提前谢谢

难道“p”已经是json了吗?不需要JSON.stringify:

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

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

您是否在浏览器中查看了网络请求,以查看它是否向端点发送了正确的数据?如果帖子中的主体是正确的,那么问题就出在API控制器上。是的,我看了,但还是一样的。看看你的角度控制器代码会很有帮助。我已经测试过,它与chrome一起工作,似乎与IE不一起工作。是不是IE 10偶然出现的?您的问题似乎类似于:感谢您的回复,我尝试了所有使用json和不使用json的场景。。。你也可以看到我解释的代码。