Frage

Ich versuche, eine C # -Methode von JavaScript aufrufen durch ActiveXObject mit:

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

Schließlich arr ein SAFEARRAY Objekt enthält, aber nicht JScript Array. Gibt es eine Möglichkeit aus einer C # Methode nativer JavaScript-Objekt zurück?

War es hilfreich?

Lösung 2

fand ich die Lösung von mir, aber keine Dokumentation gibt es für diesen Teil. Die Lösung ist JScript.ArrayObject in folgenden Weise zu verwenden:

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);

Danach können Sie in der Lage sein, die _lastField Array in JavaScript wie eine native Array zu verwenden:

var myobj = new ActiveXObject('myobject');
var arr = myobj.LastField;
alert(arr[1]);

Andere Tipps

Sie können zurückgeben JSON Zeichenfolge und dann in ein JavaScript-Objekt analysieren. Es gibt eine Reihe von .NET-Bibliotheken zur Serialisierung .NET-Objekte in JSON und umgekehrt -

ein paar zu nennen.

Diese Frage und Antwort sein kann Sie verwenden, um

Sie können DELIMITED return Beigetreten String in C # und kann in JavaScript geteilt

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

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

Via VBArray kann es wie folgt funktionieren:

  1. Zurück Objekt [] von C # (deklariert so im dispinterface).

  2. Um einen native JS-Array in JScript verwendet VBArray zu erhalten:

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

Hintergrundinformationen:

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top