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

Я не понимаю, как перебрать статический словарь, содержащийся в статическом классе из моей страницы 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 ответ

Решение

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

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 ..
<% } %>
Другие вопросы по тегам