JavaScript-js调用c#,如何传递数组参数

发布于 2016-11-14 17:37:48 字数 464 浏览 1409 评论 5

c#中有函数 foo(string[] str);
js想调用此函数,如何传递str参数?? 用js的数组作为参数不行。

由于c#有源代码,目前的做法是 把参数改为string js传递","分隔的字符串,在c#中split(",")转成数组处理。
但是还有个dll(c#写的),没有源代码,如何调用带数组参数的方法呢??????

-------------------------------补充--------------------
可是是我没说明白,最终要的问题是,js调用c#的时候,无法传递数组,如果我传递的是js的数组比如:
js代码:
var strarray = {"1","2","3"};
csharpdll.foo(strarray);
就会报找不到函数的错误。

而大多数的时候,这个c#的dll我是修改不了的,我想问,这种情况怎么办?如何修改js才能让我调用到这个函数?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

泛泛之交 2017-08-01 13:00:21

首先,我不明白你为什么要用到JS调用C#。

我想,如果要调用的话为什么不直接到C#里调用。那样就不需要把JS数组直接传递到方法里了。

如果你的JS某段代码中间需要执行这一步的话,那么可以AJAX去执行。

JS不能直接把数组当成C#的数组使用,中间必须经过一些转换,比如你所说的转为字符串然后再分割成数组,或者使用上面那朋友说的JSON,但不管哪种,你都不能直接调用。中间都需要进行一些处理。

偏爱自由 2017-07-20 05:10:07

1.activeX控件最好不要传递数组,经验证:int、string都没有问题
2.如果是vb的数组,比较容易,用vbs创建数组就能传递
3.实在解决不了:
1)只能找dll的开发人员修改dll接口
2)自己再用vb、c#或vc封装一层(比如接收js的string,转成数组再调用dll),这个才是最通用的,不止是数组,所有传递不了的参数都可以这么做。

只能这样了,如果其他人还有更好的办法,请告诉我。

清晨说ぺ晚安 2017-05-12 18:40:08

你可以换成var声明变量,foo(var str);
然后直接转换成你想要的
.--------------补充-----

无法修改Dll,有个最简单的方法,你完全可以在写一个C#方法来接受JS的数据进行转换
public void covertStr(string strarr)
{
string[] str = strarr.Split(',');
XX.XX.foo(str);//调用Dll里面的方法

}

然后JS调用covertStr就可以了

想挽留 2016-12-19 16:10:57

用json可以到这里有有种语言的标准的json处理库,其中包括C#的
http://json.org/
自己看看吧,都可以实现:
parseJSON和toJSON

浮生未歇 2016-12-03 02:18:34

先说第一个问题,其实没有必要用“,”分隔然后传递字符串给C#,既然可以修改C#代码,可以使用List来实现。

代码如下:

public string setArray(ArrayList array)
{
System.Text.StringBuilder sb = new System.Text.StringBuilder();
for (int i = 0; i < array.Count; i++)
{
sb.Append(array[i].ToString());
}
return sb.ToString();
}

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文