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 #?

È stato utile?

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:

  1. Restituisce l'oggetto [] da C # (dichiaralo nella dispinterface).

  2. 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:

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top