Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/418.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将bitArray从javascript传递到c_C#_Javascript_Asp.net Web Api_Breeze_Bitarray - Fatal编程技术网

C# 如何将bitArray从javascript传递到c

C# 如何将bitArray从javascript传递到c,c#,javascript,asp.net-web-api,breeze,bitarray,C#,Javascript,Asp.net Web Api,Breeze,Bitarray,我想将bitArray从javascript文件传递到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将

我想将bitArray从javascript文件传递到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个位数组

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

更新1

下面是我的bitarray在代码中的样子
Breeze在URL中发送查询参数,因此需要将它们序列化为字符串。您的BitArray原型需要有一个toString方法,该方法以您的服务器可以理解的方式序列化位。

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

Javascript

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

C


您的JavaScript位数组是什么?看起来像某种自定义对象…@AlexeiLevenkov我在使用自定义对象你的json看起来怎么样?@L.B我已经更新了问题这可能完全不符合要求,但可能你必须将其作为位字符串传递给web服务器,然后在收到字符串后将其转换为位数组。只是抛出一个想法…你能告诉我怎么做吗?当我使用原型时,我没有定义。toString@Happy您需要将toString定义为BitArray的函数,该函数以1和0的字符串形式返回底层数字数组。上面是一个示例,您通常会通过执行myBits.toString之类的操作来使用它。也许你可以发布BitArray的代码?我是从这篇文章中了解到BitArray的,它在我使用myBits.toString时起了作用。非常感谢。但是你能给我解释一下如何编写新的BitArraybitString.Selectc=>c=='1'吗?真:假。托雷;我不理解myBits.toString中的muchPass,将ConvertArray函数头更改为public int ConvertArraystring bitString以接受该字符串。一旦你有了这个字符串,你就可以插入上面的c代码,从这个字符串中得到一个位数组。该代码所做的是在字符串中的每个字符上循环,并创建一个新的布尔数组,其中1=>true和0=>false。然后将该数组传递给BitArray构造函数,该构造函数基于布尔数组创建新的BitArray。
BitArray.prototype.toString = function() {
    this.m_bits.join('');
};
BitArray a = new BitArray(bitString.Select(c => c == '1' ? true : false).ToArray());