Javascript 在angular js中通过http post传递对象集合

Javascript 在angular js中通过http post传递对象集合,javascript,angularjs,asp.net-mvc,Javascript,Angularjs,Asp.net Mvc,我在angular js中通过http post传递了一组对象 代码如下: $scope.selectedContent = function () { var contents = $filter('filter')($scope.data.ContentId, { Selected: true }); // I could able to get all the selected objects here, No problem with it

我在angular js中通过http post传递了一组对象

代码如下:

  $scope.selectedContent = function () {       
        var contents = $filter('filter')($scope.data.ContentId, { Selected: true });  // I could able to get all the selected objects here, No problem with it        
        var jsonData = angular.toJson(contents); //It is not able to convert to Json if there are more than 5 records
        var promise = $http.post('/webapi/cmsApi/CmsPublishApprovedContent?jsonData=' + jsonData, {});
        promise.success(function () {            
            window.location.reload();
        });



        [ReferrerFilterAttribute]
        [HttpPost]
        [System.Web.Http.ActionName("CmsPublishApprovedContent")]
        public void CmsPublishApprovedContent(string jsonData)
        {
            var contents = JsonConvert.DeserializeObject<List<ContentNodeInWorkFlow>>(jsonData);

            foreach (var content in contents)
            {
                _contentService.PublishContent(content.ContentId,  userId);
            }       
        }
    }
我刚刚获取了一个数组,并将所有内容ID都推入其中。我现在可以看到阵列中的所有ID。我试图通过上面的数组。 如何在代码隐藏中检索这些数组

[ReferrerFilterAttribute]
        [HttpPost]
        [System.Web.Http.ActionName("CmsPublishApprovedContent")]
        public void CmsPublishApprovedContent(int[] abc)
        {}

我没有看到在int[]abc下获得的任何值。在上面的方法调用中,参数的数据类型是什么。

是否有任何特定原因要将此数据作为JSON传递


如果在这种情况下使用Web API,则可以按原样传递对象,但只能确保Web API方法中的集合包含javascript集合中的所有属性

您需要方法的第二个参数。您必须通过POST请求发送此类数据,而不是在url查询中。您可以将一些数据放入post请求的主体中

你需要这个:

var postBodyWithHugeAmountOFData = {data: [1,2,3,4,5...500]};
$http.post(url, postBodyWithHugeAmountOFData).success(function () {});

另外,您必须准备好在后端处理此请求。

谢谢您的所有帖子。它工作正常,无需转换为Json。代码如下

$scope.selectedContent = function () {        
        var contents = $filter('filter')($scope.data, { Selected: true });
        var promise = $http.post('/webapi/cmsApi/CmsPublishApprovedContent' ,contents);
        promise.success(function () {
            window.location.reload();
        });
    }
签名是

public void CmsPublishApprovedContent(List<ContentNodeInWorkFlow> abc)
        {
}
public void CmsPublishApprovedContent(列出abc)
{
}

//如果记录超过5条,则无法转换为Json。这听起来非常奇怪。错误是什么?另外,最好避免将jsonData作为字符串传递-WEBAPI/MVC都可以处理json,因此您应该将签名更改为CmsPublishApprovedContent(列表内容),并让框架为您做一些不必要的工作。我尝试了您提到的过程。我想我在发布之前看到了数组中的所有值,但在检索时看不到这些值。我使用int数组作为参数来获取所有这些值。但我没有看到任何值,它只是空的。我已经在上面的帖子中添加了代码。我对ASP.NETMVC一无所知。你可以看看。你的问题是关于如何使用AngularJS通过http发送大量数据,我回答了这个问题。
public void CmsPublishApprovedContent(List<ContentNodeInWorkFlow> abc)
        {
}