Javascript 在angular js中通过http post传递对象集合
我在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
$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)
{
}