Question

J'essaie d'appeler une méthode C # à partir de JavaScript en utilisant ActiveXObject :

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

Finalement, arr contiendra un objet SAFEARRAY , mais pas le tableau JScript . Est-il possible de retourner un objet JavaScript natif à partir d'une méthode C #?

Était-ce utile?

La solution 2

J'ai trouvé la solution par moi-même, mais il n'y a pas de documentation pour cette partie. La solution consiste à utiliser JScript.ArrayObject de la manière suivante:

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

Ensuite, vous pourrez utiliser le tableau _lastField en JavaScript comme un tableau natif:

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

Autres conseils

Vous pouvez renvoyer une chaîne JSON , puis effectuer une analyse syntaxique dans un objet JavaScript. Un certain nombre de bibliothèques .NET sont disponibles pour sérialiser des objets .NET en JSON et vice-versa -

pour en nommer quelques-uns.

Cette question et réponse peuvent être de type utiliser pour vous

Vous pouvez renvoyer une chaîne jointe délimitée. en C # et peut se scinder en JavaScript

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

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

Via VBArray, cela peut fonctionner comme suit:

  1. Renvoyez l'objet [] depuis C # (déclarez-le dans l'affichage).

  2. Pour obtenir un tableau JS natif dans JScript, utilisez VBArray:

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

Informations générales:

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top