Como retornar array a JavaScript 'nativa' de um método C #?
-
22-07-2019 - |
Pergunta
Eu estou tentando chamar um método C # de JavaScript usando ActiveXObject
:
var myobj = new ActiveXObject('myobject');
var arr = myobj.GetArray();
Por fim, arr
irá conter um objeto SAFEARRAY
, mas não variedade JScript
. Existe alguma maneira para retornar objeto JavaScript nativa a partir de um método C #?
Solução 2
Eu encontrei a solução por mim, mas não existe documentação para esta parte.
A solução é usar JScript.ArrayObject
da seguinte maneira:
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);
Depois que você vai ser capaz de usar a matriz _lastField
em JavaScript como uma matriz nativa:
var myobj = new ActiveXObject('myobject');
var arr = myobj.LastField;
alert(arr[1]);
Outras dicas
Você pode retornar um href="http://www.json.org/" rel="nofollow noreferrer"> JSON corda e, em seguida, analisar em um objeto JavaScript. Há uma série de .NET bibliotecas disponíveis para serializar objetos .NET em JSON e vice-versa -
para citar alguns.
Este perguntas e respostas pode ser de utilidade para você
Você pode retorno delimitado Cadastrado Cordas em C # e pode se dividir em JavaScript
//C#
public string getArryString()
{
string[] arrstring = new string[]{"1","2","3"};
return string.Join(",", arrstring);
}
//Javascript
var arrstring = objActiveX.getArryString().split(',');
Via VBArray pode funcionar assim:
-
Voltar objeto [] a partir de C # (declarar isso no dispinterface).
-
Para obter uma matriz JS nativa em JScript uso VBArray:
var jsArray = new VBArray(myobj.GetArray()).toArray(); for (i = 0; i < jsArray.length; i++) { // use jsArray[i] }
Informações gerais:
-
JScript suporta SafeArrays de variantes única http: / /blogs.msdn.com/b/jaiprakash/archive/2007/01/09/jscript-supports-safearrays-of-variants-only.aspx
-
Eric Guia Completo Para Tipo assinaturas de Scriptable objeto Models http://blogs.msdn.com/b/ericlippert /archive/2004/07/14/183241.aspx