Как мне перечислить статический словарь, содержащийся в статическом классе со страницы 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 ..
<% } %>