我有一个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);
})
}
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;
}
答案 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