Wie ein JavaScript ‚native‘ Array aus einer C # Methode zurückzukehren?
-
22-07-2019 - |
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?
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:
-
Zurück Objekt [] von C # (deklariert so im dispinterface).
-
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:
-
JScript unterstützt Safearrays von Varianten nur http: / /blogs.msdn.com/b/jaiprakash/archive/2007/01/09/jscript-supports-safearrays-of-variants-only.aspx
-
Erics Complete Guide To Type Unterschriften von skriptfähige Objektmodelle http://blogs.msdn.com/b/ericlippert /archive/2004/07/14/183241.aspx