将数组传递给 web api AngularJS



我无法在 mvc4 中将数组从 angularJS 传递到 Web api 操作。

我$resource是:

adminApp.factory('presentation', ['$resource',
function ($resource) {
    return $resource('/api/presentation/:id', { id: '@id' },
        {
            update: { method: 'PUT', params: { id: '@id' } },
            save: { method: 'POST', params: { model1: '@model1' } },
            remove: { method: 'DELETE', params: { id: '@id' } }
        }
    );
}]);

用于传递数据数组以保存它的 AngularJS 代码(我想传递的演示文稿项目列表):

$scope.savePresentation = function() {
        if ($scope.form.$valid) {
            if ($scope.presentation.Id != undefined && $scope.presentation.Id > 0) {
                $scope.presentation.$update({ id: $scope.presentation.Id });
            } else {
                $scope.presentation.$save({ model1: presentationItemList });
            }
        } else {
            $scope.addFormValidationAlert($scope.form);
        }
    };

在 AngularJS 中保存操作后调用的我的 API 操作:

 public HttpResponseMessage Post(PresentationItemModel model, List<PresentationElementInfoModel> model1)
    {
        var item = Mapper.Map<PresentationItemModel, Presentation>(model);
        model.Id = GetActionResultData(ServiceDataProvider.PresentationCrudService.SaveOrUpdate(item));
        if (model.Id.MoreThanZero())
        {
            return new HttpResponseMessage(HttpStatusCode.Accepted)
            {
                Content = new ObjectContent<PresentationItemModel>(model,
                                                                 new JsonMediaTypeFormatter())
            };
        }
        throw new HttpResponseException(HttpStatusCode.NotFound);
    }

我在 firebug 中收到错误:"无法将多个参数('模型'和'model1')绑定到请求的内容"

这段代码工作正常,如果我不从角度传递数组演示项目列表并且不将其映射到 web api 操作的 model1 参数中。

求你,帮帮我!

$save方法params参数用于绑定到 url 模板或作为查询字符串传递。这样做{ model1: presentationItemList }可能不起作用,因为我认为行为是序列化演示文稿项目列表并将其添加到 url。

在 Angular 方面,您应该将 presentationItemList 添加为 $scope.presenation 上的子属性

$scope.presenation.items=presentationItemList

并在不传递参数的情况下执行$save

WebAPI 的问题在于它不能接受多个参数进行 POST。因此,该列表应该是PresentationItemModel的一部分,并且某些事情将起作用。

如果无法更改服务器模型,则方法应该是首先保存父级,获取父级的 ID,然后进行第二次调用以保存子列表。

最新更新