如何将 JS 对象集合发送到 ASP.NET API 服务?

2024-01-11

我正在尝试将 JavaScript 对象集合发送到我的 API 服务,但服务器收到空对象列表!

<script>

    //Collection
    var Collection = function () {
        this.count = 0;
        this.collection = {};

        this.add = function (key, item) {
            if (this.collection[key] != undefined)
                return undefined;
            this.collection[key] = item;
            return ++this.count
        }
        this.remove = function (key) {
            if (this.collection[key] == undefined)
                return undefined;
            delete this.collection[key]
            return --this.count
        }
        this.item = function (key) {
            return this.collection[key];
        }
        this.forEach = function (block) {
            for (key in this.collection) {
                if (this.collection.hasOwnProperty(key)) {
                    block(this.collection[key]);
                }
            }
        }
    }

// the JavaScript class for food 
  function foodcls(no,qunt,name, cals, carb, fat, prt,unt) {
        this.no = no;
        this.qunt = qunt;
        this.name = name;
        this.cals = cals;
        this.carb = carb;
        this.fat = fat;
        this.prt = prt;
        this.unt = unt;
    }
// instantiate new obj
var fod = new foodcls(3, 5, 'SomeName', 300, 180, 100, 20, 'Gram');
var fno =333;


var timCol = new Collection();
 timCol.add(fno, fod); 

  var urlpaths = '/api/FoodServ';
 $.ajax({
        url: urlpaths, 
        method: "POST",
        contentType: 'application/json;  charset=utf-8',
        data: JSON.stringify(timCol),
        success: function (data) {
// any thing
}
});

</script>

ASP.NET API 中的代码:

      [HttpPost]
    public HttpResponseMessage Post(List<foodcls> fods) // Here fods is empty
    {
        int rslt=0;
        string UserId = "[email protected] /cdn-cgi/l/email-protection";//User.Identity.Name;
        List<Foods_Meal_TBL> fooditems = new List<Foods_Meal_TBL>();
          if (fods.Count()>0)
          {
              foreach (foodcls item in fods)
        {
            Foods_Meal_TBL fooditem = new Foods_Meal_TBL();
            fooditem.FoodNo = item.no;
            fooditem.Quantity = item.qunt;
            fooditem.PersonID = UserId;
fooditems.Add(fooditem);
        }
         }
        rslt = SaveAllItems(fooditems); // rslt Meal No
        return Request.CreateResponse(HttpStatusCode.OK, rslt);
    }

有什么帮助吗?


我发现通过将集合转换为数组来解决问题,我知道这不是最好的解决方案,我希望有人能找到更好的解决方案,避免使用数组,但在有人给出更好的答案之前,我用我的方法来修复如下: 我添加了函数 toArr // 意味着隐式集合到数组,如下所示:

//Collection
var Collection = function () {
this.count = 0;
this.collection = {};

this.add = function (key, item) {
    if (this.collection[key] != undefined)
        return undefined;
    this.collection[key] = item;
    return ++this.count
}
this.remove = function (key) {
    if (this.collection[key] == undefined)
        return undefined;
    delete this.collection[key]
    return --this.count
}
this.item = function (key) {
    return this.collection[key];
}
this.forEach = function (block) {
    for (key in this.collection) {
        if (this.collection.hasOwnProperty(key)) {
            block(this.collection[key]);
        }
    }
}
this.toArr = function (block) {   //ToArray
    var fodarr = [];
    for (key in this.collection) {
        if (this.collection.hasOwnProperty(key)) {
            fodarr.push(this.collection[key]);// block(this.collection[key]);
        }
    }
    return fodarr;
}

}

ASP.NET API 函数:

  [HttpPost]
        public HttpResponseMessage Post(foodcls[] fods)

希望将来能帮助别人...

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将 JS 对象集合发送到 ASP.NET API 服务? 的相关文章

  • 使用接口有什么好处?

    使用接口有什么用 我听说它用来代替多重继承 并且还可以用它来完成数据隐藏 还有其他优点吗 哪些地方使用了接口 程序员如何识别需要该接口 有什么区别explicit interface implementation and implicit
  • Angular 2+ 安全性;保护服务器上的延迟加载模块

    我有一个 Angular 2 应用程序 用户可以在其中输入个人数据 该数据在应用程序的另一部分进行分析 该部分仅适用于具有特定权限的人员 问题是我们不想让未经授权的人知道how我们正在分析这些数据 因此 如果他们能够在应用程序中查看模板 那
  • Javascript 数组到 VBScript

    我有一个使用 Javascript 构建的对象数组 我需要使用 VBScript 读取它 如下例所示 我找不到在 VbScript 代码中循环遍历数组的方法myArray object 这个例子是我的问题的简化 我无法更改页面的默认语言 这
  • 是否有实用的理由使用“if (0 == p)”而不是“if (!p)”?

    我倾向于使用逻辑非运算符来编写 if 语句 if p some code 我周围的一些人倾向于使用显式比较 因此代码如下所示 if FOO p some code 其中 FOO 是其中之一false FALSE 0 0 0 NULL etc
  • 如何在类似控制台的环境中运行 JavaScript?

    我正在尝试遵循这里的示例 http eloquentjavascript net chapter2 html http eloquentjavascript net chapter2 html and print blah 在浏览器中运行时
  • 如何获取给定 DOM 元素的所有定义的 CSS 选择器?

    如何使用 jQuery 获取给定 DOM 元素的所有定义的 CSS 选择器 定义后 我的意思是在应用于任何样式表的所有 CSS 选择器document 在某种程度上 这类似于 FireBug 实现的功能 其中显示所选 DOM 元素的所有应用
  • 在 vue.js 中访问数组对象属性

    给定以下数组vue js packageMaps Object packageMap 0 Object Id 16 PackageType flag list ProductCode F BannerBase packageMap 1 Ob
  • 使用自定义堆的类似 malloc 的函数

    如果我希望使用自定义预分配堆构造类似 malloc 的功能 那么 C 中最好的方法是什么 我的具体问题是 我有一个可映射 类似内存 的设备 已将其放入我的地址空间中 但我需要获得一种更灵活的方式来使用该内存来存储将随着时间的推移分配和释放的
  • C# HashSet 只读解决方法

    这是示例代码 static class Store private static List
  • C# 中的合并运算符?

    我想我记得看到过类似的东西 三元运算符 http msdn microsoft com en us library ty67wk28 28VS 80 29 aspx在 C 中 它只有两部分 如果变量值不为空 则返回变量值 如果为空 则返回默
  • 如何更改此 jquery 插件的时区/时间戳?

    我正在使用这个名为 timeago 的插件 在这里找到 timeago yarp com 它工作得很好 只是它在似乎不同的时区运行 我住在美国东部 费城时区 当我将准确的 EST 时间放入 timeago 插件时 比如 2011 05 28
  • “接口”类似于 boost::bind 的语义

    我希望能够将 Java 的接口语义与 C 结合起来 起初 我用过boost signal为给定事件回调显式注册的成员函数 这非常有效 但后来我发现一些函数回调池是相关的 因此将它们抽象出来并立即注册所有实例的相关回调是有意义的 但我了解到的
  • 如何在 pg-promise 中设置模式

    我正在搜索的文档pg 承诺 https github com vitaly t pg promise特别是在创建客户端时 但我无法找到设置连接中使用的默认架构的选项 它始终使用public架构 我该如何设置 通常 为数据库或角色设置默认架构
  • 如何在非控制台应用程序中查看 cout 输出?

    输出到调试窗口似乎相当繁琐 我在哪里可以找到cout如果我正在编写非控制台信息 则输出 Like double i a b cout lt lt b lt lt endl I want to check out whether b is z
  • 使用 %d 打印 unsigned long long

    为什么我打印以下内容时得到 1 unsigned long long int largestIntegerInC 18446744073709551615LL printf largestIntegerInC d n largestInte
  • 在 React.js 中编辑丰富的数据结构

    我正在尝试为数据结构创建一个简单的基于网格的编辑器 但我在使用 React js 时遇到了一些概念问题 他们的文档对此没有太大帮助 所以我希望这里有人可以提供帮助 首先 将状态从外部组件传输到内部组件的正确方法是什么 是否有可能将内部组件中
  • 无法接收 UDP Windows RT

    我正在为 Windows 8 RT 编写一个 Windows Store Metro Modern RT 应用程序 需要在端口 49030 上接收 UDP 数据包 但我似乎无法接收任何数据包 我已按照使用教程进行操作DatagramSock
  • 我的班级应该订阅自己的公共活动吗?

    我正在使用 C 3 0 遵循标准事件模式我有 public event EventHandler
  • 如何从 ODBC 连接获取可用表的列表?

    在 Excel 中 我可以转到 数据 gt 导入外部数据 gt 导入数据 然后选择要使用的数据源 然后在提供登录信息后 它会给我一个表格列表 我想知道如何使用 C 以编程方式获取该列表 您正在查询什么类型的数据源 SQL 服务器 使用权 看
  • 如何将 PostgreSql 与 EntityFramework 6.0.2 集成? [复制]

    这个问题在这里已经有答案了 我收到以下错误 实体框架提供程序类型的 实例 成员 Npgsql NpgsqlServices Npgsql 版本 2 0 14 2 文化 中性 PublicKeyToken 5d8b90d52f46fda7 没

随机推荐