让我们说我的客户端模型中有一个数组:
vm.dataSheets = [
{ value: 0, text: localize.getLocalizedString('_ProductsAndServices_'), selected: selected},
{ value: 1, text: localize.getLocalizedString('_Holidays_'), selected: selected },
{ value: 2, text: localize.getLocalizedString('_Locations_'), selected: selected },
{ value: 3, text: localize.getLocalizedString('_OpHours_'), selected: selected },
{ value: 4, text: localize.getLocalizedString('_Users_'), selected: selected }
];
我将其绑定到HTML上的复选框列表。我想将已检查的值发送到Web API。使用angularJS我可以按如下方式过滤所选对象:
$filter('filter')(vm.dataSheets, { selected: true })
这将返回整个对象的数组。有没有一种简短的方法可以将选定的值检索为1,2,3等......?
现在,我将数据发送到Web API,如下所示:
var fd = new FormData();
fd.append('file', file);
fd.append('clientId', $rootScope.appData.clientId);
fd.append('sheets', $filter('filter')(vm.dataSheets, { selected: true }));
$http.post("TIUSP/systemengine/ClientSupply", fd, {
withCredentials: true,
headers: {'Content-Type': undefined },
transformRequest: angular.identity
}).success(function () {
}
在Web API中,如何检索所选值?当我使用
HttpContext.Current.Request["sheets"];
它给我一个字符串作为[object,object] [object,object]等...
答案 0 :(得分:1)
要将所选值作为带有ID的数组返回,您可以创建自定义过滤器:
app.filter('selected', function() {
return function(items) {
var filtered = [];
for (var i = 0; i < items.length; i++) {
var item = items[i];
if (item.selected === true) {
filtered.push(item.id);
}
}
return filtered;
};
});
然后,使用它:
var fd = {
'file': file,
'clientId': $rootScope.appData.clientId,
'sheets': $filter('selected')(foo.results)
};
$http.post("TIUSP/systemengine/ClientSupply", fd, {
withCredentials: true,
headers: {'Content-Type': undefined },
transformRequest: angular.identity
}).success(function () {
}
这将创建如下内容:
{
file: 'path-to-my-filez/image.png',
clientId: 11,
sheets: [1,2,3,4]
}
在您的Web API控制器
中创建一个类,用于映射您在请求中发送的参数:
public class ClientSupplyViewModel
{
public string file {get; set;}
public int clientId [get; set;}
public int[] sheets {get; set;}
}
然后,在你的控制器中使用它:
[HttpPost]
public HttpResponseMessage ClientSupply(ClientSupplyViewModel data)
{
}
上面的控制器只是一个例子。唯一重要的部分是数据参数,其中包含您的File,ClientId和整数数组。