如何从 C# 方法返回 JavaScript“本机”数组?
-
22-07-2019 - |
题
我正在尝试使用 JavaScript 从 JavaScript 调用 C# 方法 ActiveXObject
:
var myobj = new ActiveXObject('myobject');
var arr = myobj.GetArray();
最终, arr
将包含一个 SAFEARRAY
对象,但不是 JScript
大批。有没有办法从 C# 方法返回本机 JavaScript 对象?
解决方案 2
我找到了解决办法由自己,但没有文件存在这一部分。
该解决方案在以下的方式来使用JScript.ArrayObject
:
ArrayObject _lastField;
byte[] byteArray = new byte[]{2,1,2,3};
object[] array = new object[byteArray.Length];
byteArray.CopyTo(array, 0);
_lastField = Microsoft.JScript.GlobalObject.Array.ConstructArray(array);
之后,你将能够使用_lastField
阵列在JavaScript等天然数组:
var myobj = new ActiveXObject('myobject');
var arr = myobj.LastField;
alert(arr[1]);
其他提示
您可以键分隔字符串加盟在C#,并且可以拆分成JavaScript
//C#
public string getArryString()
{
string[] arrstring = new string[]{"1","2","3"};
return string.Join(",", arrstring);
}
//Javascript
var arrstring = objActiveX.getArryString().split(',');
通过 VBArray 它可以像这样工作:
从 C# 返回 object[](在调度接口中声明)。
要在 JScript 中获取本机 JS 数组,请使用 VBArray:
var jsArray = new VBArray(myobj.GetArray()).toArray(); for (i = 0; i < jsArray.length; i++) { // use jsArray[i] }
背景资料:
JScript 仅支持 SafeArrays of Variantshttp://blogs.msdn.com/b/jaiprakash/archive/2007/01/09/jscript-supports-safearrays-of-variants-only.aspx
Eric 的可编程对象模型类型签名完整指南http://blogs.msdn.com/b/ericlippert/archive/2004/07/14/183241.aspx
不隶属于 StackOverflow