首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >angularjs使用多个数组以json格式向mvc控制器发布数据。

angularjs使用多个数组以json格式向mvc控制器发布数据。
EN

Stack Overflow用户
提问于 2015-06-03 15:05:09
回答 2查看 5.2K关注 0票数 0

我正在做一个项目,在这个项目中我使用了angularjs和mvc,我正在通过$http.post().For将数据从angular js控制器传递到我的mvc控制器,现在我正在使用单个对象/ json数组来检索数据,就像这个-public bool UpdateIssueDetails(IssueBO issue).But我想,如果我可以像这个公共bool UpdateIssueDetails(IssueBO issue,List lstMembersToNotify)那样做,.I想要从ny angular js控制器发送两个json数组到上面的mvc控制器方法。

angularjs控制器代码

代码语言:javascript
运行
复制
 $scope.saveIssueDetails = function (issue) {
    var milestoneId = "";
    var milestoneName = "";
    if ($scope.selectedIssue.Milestone== undefined) {
        milestoneId = "";
        milestoneName = "";
    } else {
        milestoneId = $scope.selectedIssue.Milestone.Id;
        milestoneName = $scope.selectedIssue.Milestone.Name;
    }
    var arrMembersToNotify = [];
    var arrMembersToNotifyNew = [];
    var iCount = 0;
    $("#membersToNotify input[type=checkbox]:checked").each(function () {
        arrMembersToNotify = $(this).val().split("~");
        arrMembersToNotifyNew.push({ "UserId": arrMembersToNotify[0], "UserDisplayName": arrMembersToNotify[1], "Email": arrMembersToNotify[2] });         
    }); 
    var issueDetails =
   {
    Id: issue.Id,
    ProjectId: issue.ProjectId,
    ProjectName: issue.ProjectName,
    IssueStatusId: $scope.selectedIssue.Status.Id,
    StatusName: $scope.selectedIssue.Status.Name,
    IssuePriorityId: $scope.selectedIssue.Priority.Id,
    PriorityName: $scope.selectedIssue.Priority.Name,
    AssignedUserId: $scope.selectedIssue.AssignedTo.Id,
    AssigneeDisplayName: $scope.selectedIssue.AssignedTo.DisplayName,
    IssueCategoryId: $scope.selectedIssue.Category.Id,
    CategoryName: $scope.selectedIssue.Category.Name,
    DueDate: $scope.selectedIssue.DueDate,
    OwnerUserId: $scope.selectedIssue.OwnedBy.Id,
    OwnerDisplayName: $scope.selectedIssue.OwnedBy.DisplayName,
    IssueTypeId: $scope.selectedIssue.Type.Id,
    IssueTypeName: $scope.selectedIssue.Type.Name,
    IssueResolutionId: $scope.selectedIssue.Resolution.Id,
    ResolutionName: $scope.selectedIssue.Resolution.Name,
    MilestoneId: milestoneId,
    MilestoneName: milestoneName,
    Estimation: $scope.selectedIssue.Estimation,
    Progress: $scope.selectedIssue.Progress,
   };
    var url = window.location.protocol + '//' + window.location.host + '/api/Issues' + '/UpdateIssueDetails/';
    $http.post(url, [issueDetails, arrMembersToNotifyNew]).success(function (data, status, headers, config) {
        if (data != '' || data.length >= 0 || data == true) {
            //$scope.selectedIssue = issue;
            //$scope.showIssueDetails($scope.selectedIssue);
            $scope.GetAssignedIssues();
        }
        else if (data == '' || data == false) {
            $scope.selectedIssue = null;
        } else {
            $scope.errors.push(data.error);
        }
    });
};

mvc控制器代码

代码语言:javascript
运行
复制
  [HttpPost]
    [AuthenticationRequired]
    public bool UpdateIssueDetails(IssueBO issue,List<IssueNotification> lstMembersToNotify)
    {
        try
        {
            //var issueDetails = JsonConvert.DeserializeObject<Dictionary<string, dynamic>>(issueAllDetails[0].ToString());
            //List<Dictionary<string, string>> membersToNotifyDetails = JsonConvert.DeserializeObject<List<Dictionary<string, string>>>(issueAllDetails[1].ToString());
            var membersToNotify = lstMembersToNotify.Select(membersToNotifyDetail =>
                                                                new IssueNotification()
                                                                {
                                                                    UserId =membersToNotifyDetail.UserId,
                                                                    Email =
                                                                        membersToNotifyDetail.Email,
                                                                    UserDisplayName =
                                                                        membersToNotifyDetail.UserDisplayName
                                                                }).ToList();
            var newIssue = new IssueBO
            {
                OwnerUserId = issue.OwnerUserId,
                OwnerDisplayName = issue.OwnerDisplayName,
                LastUpdatedUserId = SessionItems.UserId,
                LastUpdaterDisplayName = SessionItems.DisplayName,
                LastUpdatedOn = DateTime.Now,
                ProjectId = issue.ProjectId,
                ProjectName = issue.ProjectName,
                Id = issue.Id,
                AssignedUserId = issue.AssignedUserId,
                AssigneeDisplayName = issue.AssigneeDisplayName,
                IssueStatusId = issue.IssueStatusId,
                StatusName = issue.StatusName,
                Progress = issue.Progress,
                IssuePriorityId = issue.IssuePriorityId,
                PriorityName = issue.PriorityName,
                IssueTypeId = issue.IssueTypeId,
                IssueTypeName = issue.IssueTypeName,
                IssueCategoryId = issue.IssueCategoryId,
                CategoryName = issue.CategoryName,
                IssueResolutionId = issue.IssueResolutionId,
                ResolutionName = issue.ResolutionName,
                DueDate = issue.DueDate,
                Estimation = issue.Estimation,
                MilestoneId = issue.MilestoneId,
                MilestoneName = issue.MilestoneName
            };
            var result = BLL.AdminLayer.UpdateIssueDetail(newIssue, membersToNotify);
            return result.IsSuccessful && result.Result;
        }
        catch (Exception ex)
        {
            BLL.Base.BaseLayer.WriteApplicationLog(ex);
            return false;
        }
    }

我正在从我的angularjs控制器传递两个json数组,就像这样-$http.post(url,issueDetails,arrMembersToNotifyNew).success(function (data,status,headers,.But))我尝试this.Please时遇到错误this.Please建议如何实现this.Thanks

EN

回答 2

Stack Overflow用户

发布于 2015-06-03 15:12:55

您需要使用JSON.stringify()将数据传递给操作

代码语言:javascript
运行
复制
$http.post(url, JSON.stringify({ issue: issueDetails, 
     lstMembersToNotify: arrMembersToNotifyNew 
});
票数 1
EN

Stack Overflow用户

发布于 2015-06-03 15:08:37

将其作为对象的属性发布。

代码语言:javascript
运行
复制
$http.post(url, { issue: issueDetails, lstMembersToNotify: arrMembersToNotifyNew });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30613088

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档