我正在尝试使用 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]);

其他提示

您可以返回一个 JSON 字符串,然后解析为 JavaScript 对象。有许多 .NET 库可用于将 .NET 对象序列化为 JSON,反之亦然

仅举几例。

问题和答案 可能对你有用

您可以键分隔字符串加盟在C#,并且可以拆分成JavaScript

//C#
public string getArryString()
{
string[] arrstring = new string[]{"1","2","3"};
return string.Join(",", arrstring);
}

//Javascript
var arrstring = objActiveX.getArryString().split(',');

通过 VBArray 它可以像这样工作:

  1. 从 C# 返回 object[](在调度接口中声明)。

  2. 要在 JScript 中获取本机 JS 数组,请使用 VBArray:

    var jsArray = new VBArray(myobj.GetArray()).toArray();
    for (i = 0; i < jsArray.length; i++) 
    {
       // use jsArray[i]
    }
    

背景资料:

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top