如何使用角度JS将javascript对象从视图传递到控制器?

时间:2016-01-08 09:48:15

标签: javascript asp.net angularjs asp.net-mvc asp.net-mvc-4

我尝试使用angularJS $ http服务将客户类对象传递给Asp.net MVC控制器。

var app = angular.module("myApp", []);
app.controller("myCtrl", function ($scope,$http)
{   
    $scope.getRecord = function () {

        $scope.objCustomer = { Id: 5, Name: 'sasi', Dept: 'IT' };               
        $http({ url: "Home/GetCustbyID", 
                method: "GET", 
                params: {objCustomer: $scope.objCustomer} })
        .then(function (response) 
            {    
             //success code
            };});
}});

控制器动作定义如下:

public JsonResult GetCustbyID(Customer objCustomer)
{
   return Json(objCustomer, JsonRequestBehavior.AllowGet);
}

但是在上面的控制器操作中,customer对象始终作为null传递。我错过了什么吗?

请帮我们解决这个问题。

2 个答案:

答案 0 :(得分:0)

如果您希望在AJAX请求中的JSON对象中一次发送多个参数,并将其捕获为服务器端的对象,则应使用POST请求。

$http.post(url, $scope.objCustomer)
     .then(successCallback, errorCallback); 

答案 1 :(得分:0)

当您实际向服务器发送数据时,您将发布在$http

var app = angular.module("myApp", []);
app.controller("myCtrl", function ($scope,$http)
{   
    $scope.getRecord = function () {

        $scope.objCustomer = { Id: 5, Name: 'sasi', Dept: 'IT' };               
        $http({ 
                url: "Home/GetCustbyID", 
                method: "POST", 
                data:  $.param({ objCustomer : $scope.objCustomer })                
              })
        .then(function(response) {    
             //success code
            };});
}});

在其他情况下如果您想以json字符串发送/传递数据,则必须使用stringify这样的

 var data = $.param({
            json: JSON.stringify({
                name: $scope.name
            })
        });
 $http.post("/path_of_controller", data).success(function(data, status) {
           //do whatever you like
 })