Come restituire un array JavaScript "nativo" da un metodo C #?
-
22-07-2019 - |
Domanda
Sto cercando di chiamare un metodo C # da JavaScript usando ActiveXObject
:
var myobj = new ActiveXObject('myobject');
var arr = myobj.GetArray();
Alla fine, arr
conterrà un oggetto SAFEARRAY
, ma non l'array JScript
. Esiste un modo per restituire un oggetto JavaScript nativo da un metodo C #?
Soluzione 2
Ho trovato la soluzione da solo, ma non esiste alcuna documentazione per questa parte.
La soluzione è utilizzare JScript.ArrayObject
nel modo seguente:
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);
Successivamente sarai in grado di utilizzare l'array _lastField
in JavaScript come un array nativo:
var myobj = new ActiveXObject('myobject');
var arr = myobj.LastField;
alert(arr[1]);
Altri suggerimenti
Puoi restituire una JSON e quindi analizzare un oggetto JavaScript. Sono disponibili numerose librerie .NET per serializzare gli oggetti .NET in JSON e viceversa
per citarne alcuni.
Questa domanda e risposta può essere di usalo
Puoi restituire una stringa unita delimitata in C # e può essere suddiviso in JavaScript
//C#
public string getArryString()
{
string[] arrstring = new string[]{"1","2","3"};
return string.Join(",", arrstring);
}
//Javascript
var arrstring = objActiveX.getArryString().split(',');
Tramite VBArray può funzionare in questo modo:
-
Restituisce l'oggetto [] da C # (dichiaralo nella dispinterface).
-
Per ottenere un array JS nativo in JScript usa VBArray:
var jsArray = new VBArray(myobj.GetArray()).toArray(); for (i = 0; i < jsArray.length; i++) { // use jsArray[i] }
Informazioni di base:
-
JScript supporta solo SafeArray di varianti http: / /blogs.msdn.com/b/jaiprakash/archive/2007/01/09/jscript-supports-safearrays-of-variants-only.aspx
-
La guida completa di Eric al tipo di firme dei modelli di oggetti gestibili tramite script http://blogs.msdn.com/b/ericlippert /archive/2004/07/14/183241.aspx