2010-03-06 3 views
1

Je ne comprends pas comment faire une boucle sur un dictionnaire statique contenu dans une classe statique de ma page aspx. J'ai cela pour la classe statiqueComment puis-je énumérer un dictionnaire statique contenu dans une classe statique de asp.net (aspx) page

public static class ErrorCode 

{ 
    public static IDictionary<int, string> ErrorCodeDic; 

    static ErrorCode() 
    { 
     ErrorCodeDic = new Dictionary<int, string>() 
     { 
      {1, "a problem"}, 
      {2, "b problem"} 
     }; 
    } 
} 

PLUS PRECIS Je peux le faire fonctionner en épelant comme ça dans la partie ASPX

foreach(System.Collections.generic.KeyValuePair<int, string> kvp in MyLibrary.Dictionaries.ErrorCode.ErrorCodeDic) 

Mais je pensais que je pouvais ce sténographie en déclarant des variables dans le code derrière?

Public KeyValuePair<int, string> error; 
Public ErrorCode.ErrorCodeDic ErrorCodes; OR 
Public ErrorCode.ErrorCodeDic ErrorCodes = ErrorCode.ErrorCodeDic; " 

Je reçois des erreurs de compilation « Le nom du type 'ErrorCodeDic' existe pas dans le ErrorCode type.

Et puis dans la page ASPX utilisation

foreach(error in ErrorCodes) 

Répondre

3

Vous pouvez boucler sur toutes les paires comme ceci:

Pour votre cas mis à jour, dans le code-behind:

public IDictionary<int, string> ErrorCodes = MyLibrary.Dictionaries.ErrorCode.ErrorCodeDic; 

dans le ASPX:

foreach(var error in ErrorCodes) { } 

Sinon, rien dans le code-behind, et cela dans le ASPX:

<%@ Import Namespace="MyLibrary.Dictionaries" %> 
....Content... 
<% foreach(var error in ErrorCode.ErrorCodeDic) { %> 
    .. something .. 
<% } %> 
+0

Je vois ce que tu veux dire, je voulais faire quelque chose de différent. est-il possible de définir le keyvaluepair kvp en dehors de la foreach et juste faire ce que je décris dans mon "PLUS SPECIFIC" – Breadtruck

+0

@Breadtruck - Vous pouvez faire 'foreach (code int dans ErrorCode.ErrorCodeDic.Keys) {' ... est-ce ce que vous voulez dire? –

+0

@Breaktruck - Je ne suis toujours pas sûr de comprendre, vous pouvez ajouter une référence oui, comme ceci: 'var dict = MyLibrary.Dictionaries.ErrorCode.ErrorCodeDic;' alors faites: 'foreach (var kvp in dict) {....' –

Questions connexes