Problem Statement
I have a javascript array which i want to pass as a parmeter to $http.get in AngularJs. This array will be passed to action method in MVC. what should be the syntax? Please Help me. I am stuck here. The array being passed is javascript array
Angular Directive
$scope.selectedIdArray = [];
$scope.selectedIdArray.push({ id: $scope.selectedId })
$scope.$parent.getProjects($scope.selectedIdArray);
Angular Controller
$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 Controller Action Method
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;
}