我无法在 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,然后进行第二次调用以保存子列表。