数据未在Angularjs中发布到WebApi

时间:2016-08-29 09:21:04

标签: angularjs asp.net-web-api

角度代码如下。请查看我是否遗漏了帖子请求中的内容 -

<script>   
var app = angular.module("myApp", [])
.controller("myControllerSubmit", function ($scope, $http) {
    $scope.submit = function () {
        var Employee = { empID: $scope.empId, Name: $scope.empName, Gender: $scope.empGender }
        $http(
        {
          method: 'POST',
          url: 'http://localhost:58365/home/saveEmpData',
          data:  Employee,
          headers: { 'Content-Type': 'application/x-www-form-urlencoded'                       }   
        }).success(function (response,status,headers,config) {
              $scope.data1 = response.data;
        })
    }
})
</script>

在webApi中,我获得了null Employee对象

[HttpPost]
public void saveEmpData( Employee emp)
{
    if (emp.Name != null)
    {
        var objempList = new DAL();
        objempList.saveData(emp);
    }
}

5 个答案:

答案 0 :(得分:0)

只需在[FromBody]参数之前添加emp属性即可从已发布的请求中获取数据。

public void saveEmpData([FromBody] Employee emp)

答案 1 :(得分:0)

在将正文内容作为一个巨型字符串发送时使用内容类型x-www-form-urlencoded。阅读Matts关于它的好答案here
在您的情况下,您想要发送一个对象,然后它更适合使用内容类型json 我会更改提交如下,然后再试一次

    <script>   

          var app = angular.module("myApp", [])

        .controller("myControllerSubmit", function ($scope, $http) {

            $scope.submit = function () {
                var Employee = { empID: $scope.empId, Name: $scope.empName, Gender: $scope.empGender }
                $http(
              {
                  method: 'POST',
                  url: 'http://localhost:58365/home/saveEmpData',
                  data:  JSON.stringify(Employee),
                  headers: { 'Content-Type': 'application/json'                       }   
              }).success(function (response,status,headers,config) {
                  $scope.data1 = response.data;
              })
            }
        })

    </script>

答案 2 :(得分:0)

ff.load

答案 3 :(得分:0)

由于您希望通过json进行模型绑定,您必须将变量更改为与Web api emp中的名称相同的名称。

<script>   

              var app = angular.module("myApp", [])

            .controller("myControllerSubmit", function ($scope, $http) {

                $scope.submit = function () {
                    var Employee = { empID: $scope.empId, Name: $scope.empName, Gender: $scope.empGender }
                    $http(
                  {
                      method: 'POST',
                      url: 'http://localhost:58365/home/saveEmpData',
                      data:  {emp: Employee},
                      headers: { 'Content-Type': 'application/x-www-form-urlencoded'                       }   
                  }).success(function (response,status,headers,config) {
                      $scope.data1 = response.data;
                  })
                }
            })

             </script>

这将有希望解决您的问题

答案 4 :(得分:0)

你在分配属性时犯了一个错误。 替换为

var Employee = { "empID": $scope.empId, "Name": $scope.empName, "Gender": $scope.empGender }