我试图通过使用ActiveXObject
以下方法从JavaScript调用C#方法:
var myobj = new ActiveXObject('myobject'); var arr = myobj.GetArray();
最终,arr
将包含一个SAFEARRAY
对象,但不包含JScript
数组.有没有办法从C#方法返回本机JavaScript对象?
您可以返回JSON字符串,然后解析为JavaScript对象.有许多.NET库可用于将.NET对象序列化为JSON,反之亦然 -
JSON.NET
Microsoft ASP.NET AJAX库
JSONSharp
仅举几例.
这个问题和答案可能对您有用
我自己找到了解决方案,但这部分没有文档.解决方案是以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]);