如何将数组作为参数传递给Angularjs中的$ http.get

时间:2016-05-13 13:33:49

标签: javascript arrays angularjs asp.net-mvc

问题陈述

我有一个javascript数组,我希望将其作为参数传递给AngularJs中的$ http.get。该数组将传递给MVC中的action方法。应该是什么语法?请帮我。我被困在这里。 传递的数组是javascript数组

角度指令

$scope.selectedIdArray = [];   
$scope.selectedIdArray.push({ id: $scope.selectedId })

$scope.$parent.getProjects($scope.selectedIdArray);

角度控制器

$scope.getProjects = function (selectedIdArray) {
        $http.get('Home/GetAllProjects', { params: { "parentId[]": selectedIdArray } })
            .then(function (data) {
                    $scope.projects = [];
            angular.forEach(data.data, function (value, index) {
                $scope.projects.push({ id: value.N_LevelID, label: value.T_LevelName }
                );
            });
            })
        .catch(function (data) {
            console.error('Gists error', data.status, data.data);
        })
    }

MVC控制器操作方法

public JsonResult GetAllProjects(int?[] parentId = null)
        {
            iMetricsEntities dbcontext = new iMetricsEntities();
            JsonResult jr = new JsonResult();
            if (parentId == null)
            {
                jr.Data = dbcontext.Levels.Where(objelevel => objelevel.N_LevelTypeID == 2 && objelevel.B_Active);
                jr.JsonRequestBehavior = JsonRequestBehavior.AllowGet;

                //return new JsonResult
                //{
                //    Data = dbcontext.Levels.Where(objelevel => objelevel.N_LevelTypeID == 2 && objelevel.B_Active),
                //    JsonRequestBehavior = JsonRequestBehavior.AllowGet
                //};
            }
            else if (parentId != null)
            {
                foreach (var id in parentId)
                {
                    jr.Data = dbcontext.Levels.Where(objelevel => objelevel.N_LevelTypeID == 2 && objelevel.B_Active && objelevel.N_ParentID == id);
                    jr.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
                }
            }

            return jr;
        }

2 个答案:

答案 0 :(得分:2)

如果您按照以下方式定义控制器操作:

    public JsonResult GetAllProjects(int[] parentId)
    {
        // Stuff goes here
    }

您可以这样称呼它:

    $http.get('Home/GetAllProjects', { params: { "parentId": [1, 2, 3, 42] } })
    .then(function(response) {
        // stuff goes here
    });

这可行的原因是因为可以多次指定查询字符串。 $ http和MVC都将这些解释为数组。

在上面的示例中,这是由$ http生成的URL,控制器操作模型绑定到数组:

http://localhost:56976/Home/GetAllProjects?parentId=1&parentId=2&parentId=3&parentId=42

答案 1 :(得分:1)

a,1,2
b,2,3
c,1,3,2