首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将数组从WebAPI从AngularJS传递到WebAPI并从WebAPI读取

将数组从WebAPI从AngularJS传递到WebAPI并从WebAPI读取
EN

Stack Overflow用户
提问于 2016-06-06 12:53:36
回答 1查看 2.4K关注 0票数 0

假设我在我的客户端模型中有一个数组:

代码语言:javascript
复制
        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。使用angularJS,我可以过滤选定的对象如下:

代码语言:javascript
复制
$filter('filter')(vm.dataSheets, { selected: true })

这将返回整个对象的数组。是否有一种简单的方法来检索选定的值,如1、2、3等.?

现在,我将数据发送到Web,如下所示:

代码语言:javascript
复制
  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中,如何检索选定的值?当我用

代码语言:javascript
复制
HttpContext.Current.Request["sheets"];

它给了我一个字符串作为对象、对象等.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-06 15:07:25

若要将选定的值作为带有Ids的数组返回,可以创建自定义筛选器:

代码语言:javascript
复制
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;
  };
});

然后,使用它:

代码语言:javascript
复制
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 () {    
}

这将创建如下内容:

代码语言:javascript
复制
{
   file: 'path-to-my-filez/image.png',
   clientId: 11,
   sheets: [1,2,3,4]
}

Web控制器中的

创建一个类,该类映射在请求中发送的参数:

代码语言:javascript
复制
public class ClientSupplyViewModel
{
    public string file {get; set;}
    public int clientId [get; set;}
    public int[] sheets {get; set;}
}

然后,在控制器中使用它:

代码语言:javascript
复制
[HttpPost]
public HttpResponseMessage ClientSupply(ClientSupplyViewModel data)
{

}

上面的控制器只是一个例子。唯一重要的部分是包含您的文件、ClientId和ints数组的数据参数。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37658041

复制
相关文章

相似问题

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