Как мне перечислить статический словарь, содержащийся в статическом классе со страницы asp.net (aspx) - PullRequest
1 голос
/ 06 марта 2010

Я не понимаю, как перебрать статический словарь, содержащийся в статическом классе, из моей страницы aspx. У меня это для статического класса

public static class ErrorCode  

{
    public static IDictionary<int, string> ErrorCodeDic;

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

БОЛЬШЕ КОНКРЕТНЫХ Я могу заставить его работать, изложив это в aspx части

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

Но я думал, что мог бы сократить это, объявив переменные в коде позади?

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

Я получаю ошибки сборки "Имя типа ErrorCodeDic не существует в типе ErrorCode.

А затем на странице aspx используйте

foreach( error in ErrorCodes)

1 Ответ

3 голосов
/ 06 марта 2010

Вы можете перебрать все пары следующим образом:

foreach( KeyValuePair<int, string> kvp in ErrorCode.ErrorCodeDic)
{
  Response.Write(string.Format("Key = {0}, Value = {1}", kvp.Key, kvp.Value));
}

Для вашего обновленного случая, в коде позади:

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

в aspx:

foreach(var error in ErrorCodes) { }

Либо в коде ничего нет, а в aspx:

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