2010-07-28 7 views
3

Semblable à ceci How do I return an array of strings from an ActiveX object to JScript mais en C#.Passer tableau De l'objet COM C# au JavaScript?

J'ai un contrôle COM qui renvoie un tableau de chaînes à javascript. Il semble que javascript ne peut pas comprendre ce que je repasse et le tableau en javascript est toujours indéfini.

Javascript:

try 
{ 
    keystore.openKeyStore("MY", true, false); 
    var fNames = new Array(); 
    fNames = keystore.getAllFriendlyNames(); 
    document.getElementById('par').innerHTML = fNames[0]; 
} 
catch(err) 
{ 
    document.getElementById('err').innerHTML = err.description; 
} 

que les résultats 'non défini' pour fNames[0];

C#:

public object[] getAllFriendlyNames() 
    { 
     if (!keystoreInitialized) 
      throw new Exception("Key store has not been initialized"); 

     X509Certificate2Collection allCerts = certificateStore.Certificates; 

     int storeSize = allCerts.Count; 

     if (storeSize == 0) 
      throw new Exception("Empty Key Store, could have opened using the wrong keystore name."); 

     object[] friendlyNames = new object[storeSize]; 

     for (int i = 0; i < storeSize; i++) 
     { 
      string friendlyName = allCerts[i].FriendlyName; 

      if (friendlyName == "") 
       friendlyName = allCerts[i].Subject; 

      friendlyNames[i] = (object) friendlyName; 
     } 

     return friendlyNames; 
    } 

J'ai essayé de retourner les deux tableaux d'objets et tableaux de chaînes en vain.

Répondre

2

Vous pouvez essayer de sérialiser vos données vers json et de les désérialiser sur le client. jQuery a construit dans les fonctions de JSON. Je l'ai fait avec des objets plus complexes, mais pas avec des tableaux de chaînes, bien que je parie que cela fonctionnera aussi facilement.

2

Vous pouvez envoyer tableau JavaScript directement à partir de votre méthode activeX, votre fonction sera:

public ObjectArray getAllFriendlyNames() 
{ 
    //.... the same ...... 
    return Microsoft.JScript.GlobalObject.Array.ConstructArray(friendlyNames); 
} 

Ajout référence Microsoft.JScript à votre projet.

Questions connexes