【问题标题】:How to pass bitArray from javascript to c#如何将bitArray从javascript传递到c#
【发布时间】:2014-10-28 07:04:32
【问题描述】:

我想将我的 javascript 文件中的 bitArray 传递给我在 webApi 中的方法

我在我的 javascript 文件中创建如下所示的 bitArray

 var myBits = new BitArray(2);
 myBits.setAt(1,false);
 myBits.setAt(2,true);

然后我调用webApi中的方法如下

 public int ConvertArray(BitArray a)
    {
        //some logic
    }

我使用Breeze将数据传递给webapi,所以我尝试如下传递数据

var query = EntityQuery.from("ConvertArray")
                  .withParameters({ a: myBits });
        manager1.executeQuery(query);

但是当我在我的 webapi 方法中设置断点时,我得到了空白数据。但是当我在传递数据时在 javascript 中放置断点时会得到 2 条记录,或者我应该说 2 bitArrays。

有人知道如何将 bitArray 传递给 webapi 吗?

更新 1

这是我的位数组在我的代码中的样子

【问题讨论】:

  • 你的“JavaScript BitArray”是什么?看起来像某种自定义对象...
  • @AlexeiLevenkov 我正在使用自定义对象
  • 你的 json 长什么样子?
  • @L.B 我更新了问题
  • 这可能完全不合时宜,但也许您必须将其作为位字符串传递给 Web 服务器,然后在收到字符串后将其转换为 BitArray。只是抛出一个想法......

标签: c# javascript asp.net-web-api breeze bitarray


【解决方案1】:

Breeze 在 URL 中发送查询参数,因此需要将它们序列化为字符串。您的 BitArray 原型需要有一个 toString() 方法,以您的服务器可以理解的方式序列化位。

【讨论】:

  • 你能告诉我怎么做吗?
【解决方案2】:

一种可能性是在将 BitArray 发送到服务器之前将其存储为位字符串,然后在字符串到达​​服务器端后将其转换为 C# BitArray。

Javascript

BitArray.prototype.toString = function() {
    this.m_bits.join('');
};

使用此方法将[ 1, 0, 1, 0 ]之类的数组更改为字符串1010

C#

BitArray a = new BitArray(bitString.Select(c => c == '1' ? true : false).ToArray());

【讨论】:

  • 当我使用prototype.toString时我得到了未定义
  • @Happy 您需要将toString 定义为BitArray 的函数,它将底层数字数组作为1s 和0s 的字符串返回。以上是一个示例,您通常会通过执行myBits.toString() 之类的操作来使用它。也许您可以发布BitArray 的代码?
  • 我从stackoverflow.com/questions/6972717/…得到了这个bitarray的想法
  • 当我使用 myBits.toString 时它起作用了。非常感谢。但是你能解释一下代码 new BitArray(bitString.Select(c => c == '1' ? true : false).ToArray());我不太了解
  • myBits.toString() 传入服务器并将ConvertArray 函数头更改为public int ConvertArray(string bitString) 以接受字符串。获得该字符串后,您可以插入上面的 c# 代码以从字符串中获取 BitArray。该代码的作用是遍历字符串中的每个字符并创建一个新的布尔数组,其中1 => true0 => false。然后它将这个数组传递给 BitArray 构造函数,该构造函数根据布尔数组创建一个新的 BitArray。
猜你喜欢
  • 2011-04-02
  • 2019-11-24
  • 2015-09-19
  • 1970-01-01
  • 2019-08-07
  • 1970-01-01
  • 2023-03-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多