代码之家  ›  专栏  ›  技术社区  ›  Pavel Podlipensky

如何从C#方法返回JavaScript“本机”数组?

  •  7
  • Pavel Podlipensky  · 技术社区  · 17 年前

    我试图通过使用 ActiveXObject :

    var myobj = new ActiveXObject('myobject');
    var arr = myobj.GetArray();
    

    最后 arr 将包含一个 SAFEARRAY JScript 大堆有没有办法从C#方法返回本机JavaScript对象?

    4 回复  |  直到 17 年前
        1
  •  8
  •   Community Mohan Dere    9 年前

    你可以退票 JSON 字符串,然后解析为JavaScript对象。有许多.NET库可用于将.NET对象序列化为JSON,反之亦然-

    question and answer 也许对你有用

        2
  •  5
  •   George Stocker NotMe    17 年前

    解决办法是使用 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

    var myobj = new ActiveXObject('myobject');
    var arr = myobj.LastField;
    alert(arr[1]);
    
        3
  •  1
  •   Raj Kumar - rajkrs    10 年前

    你可以 return delimited Joined String 在C#中,可以拆分为JavaScript

    //C#
    public string getArryString()
    {
    string[] arrstring = new string[]{"1","2","3"};
    return string.Join(",", arrstring);
    }
    
    //Javascript
    var arrstring = objActiveX.getArryString().split(',');
    
        4
  •  0
  •   Martin Schmidt    11 年前

    通过VBArray,其工作原理如下:

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

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

    背景资料: