在URL中动态传递数组数据以调用webapi方法(C#)
下面是我从后端生成的json数据在URL中动态传递数组数据以调用webapi方法(C#),c#,angularjs,arrays,json,asp.net-web-api,C#,Angularjs,Arrays,Json,Asp.net Web Api,下面是我从后端生成的json数据 {"langs":[{"cisAreaId":100,"area":"Prog","name":"C#"},{"cisAreaId":110,"area":"Prog","name":"Java"},{"cisAreaId":120,"area":"Prog","name":"MS.NET languages(VB.NET,etc)"},{"cisAreaId":130,"area":"Prog","name":"MS Visual Languages (VB,
{"langs":[{"cisAreaId":100,"area":"Prog","name":"C#"},{"cisAreaId":110,"area":"Prog","name":"Java"},{"cisAreaId":120,"area":"Prog","name":"MS.NET languages(VB.NET,etc)"},{"cisAreaId":130,"area":"Prog","name":"MS Visual Languages (VB, C++, etc)"},{"cisAreaId":140,"area":"Prog","name":"Python"},{"cisAreaId":150,"area":"Prog","name":"Ruby"}]}
以上数据已复制到$scope.areas。
现在在我看来
<div ng-repeat="lang in areas.langs">
<label><input type="checkbox" ng-model="lang.selected" value="{{lang.cisAreaId}}" /> {{lang.name}}</label>
</div>
它在选择两个复选框值后形成数组
{"languages":[{"cisAreaId":110},{"cisAreaId":120}]}
从上面的代码中,我如何在URL中传递上述动态数组以调用后端方法
Angularjs Controller Code:
XXXService.step2Form(data).then(function (results) {
console.log(results.data);
}, function (error) {
alert(error.data.message);
});
service code:
var _step2Form = function (data) {
return $http.post(serviceBase + 'api/feedback/Step2Data' + data , { headers: { 'Content-Type': 'application/json' } });
};
我已将数据动态传递到后端
public HttpResponseMessage Step2Data([FromBody] int[] languages)
但是我得到了这样的错误
http://localhost:53401/api/XXXX/Step2Data[object%20Object],[object%20Object] 404 (Not Found)
谁能告诉我如何在url中动态传递数组值以调用webapi方法 在
$scope.languageArray
中,只需推送id:
$scope.languageArray = [];
angular.forEach($scope.areas.langs, function (lang) {
if (lang.selected) $scope.languageArray.push(lang.cisAreaId);
});
var data = JSON.stringify({
languages: $scope.languageArray,
});
你是通过url传递的,不是正文。另外,摆脱复杂的对象结构,只使用一个id数组。我尝试只推id,但结果是[130140],错误URL是404(未找到)。我更改了后端以及公共HttpResponseMessage Step2Data([From Body]列表语言)中的方法参数,并删除了[FomBody]。尝试用[FromBody]列表语言替换[FromBody]int[]语言我尝试只推送id,但结果将是[130140],错误URL为404(未找到)。我更改了后端中的方法参数以及公共HttpResponseMessage Step2Data([From Body]列表语言)将[HttpPost]添加到您的操作:[HttpPost]公共HttpResponseMessage Step2Data([FromBody]int[]语言)是的,我已添加[HttpPost]公共HttpResponseMessage Step2Data([FromBody]列表语言)我想我们需要在URL部分做一些更改。是的。将+替换为:$http.post(serviceBase+'api/feedback/Step2Data,data。。。
$scope.languageArray = [];
angular.forEach($scope.areas.langs, function (lang) {
if (lang.selected) $scope.languageArray.push(lang.cisAreaId);
});
var data = JSON.stringify({
languages: $scope.languageArray,
});