我在应用程序范围内创建了一个Dictionary,但我不确定如何在另一个页面中正确访问它。
void Application_Start(object sender, EventArgs e)
{
Application["PaginationTable"] = new Dictionary<int, int>();
Dictionary<int, int> dictPagination = new Dictionary<int, int>();
//fill dict
for (int i = 0; i < 40; i++)
{
etc
}
Application["PaginationTable"] = dictPagination;
}
在myotherpage.cs
中 foreach (KeyValuePair<int, int> pair in Application["PaginationTable"])
{
Response.Write(pair.Key +" :: " + pair.Value + "<br>");
etc
}
产生的错误是: “foreach语句不能对'object'类型的变量进行操作,因为'object'不包含'GetEnumerator'的公共定义”
要点是我需要创建一个字典来保存一个价值/对数据表,这些数据不会改变,需要访问/比较网站的不同部分。
帮助表示赞赏
答案 0 :(得分:2)
存储为应用程序变量(或会话变量)的所有内容都是对象类型。
我命令将该应用程序变量作为Dictionary对象读取,只需将该对象强制转换为它:
foreach (var pair in (Dictionary<int, int>)Application["PaginationTable"])
答案 1 :(得分:1)
由于Application
可以存储许多不同类型,因此必须将它们存储为Object
,所有类型的父类都是从中继承的。您需要将Application["PaginationTable"]
转换为正确的类型,即foreach可以操作的Dictionary<int, int>
。即:
foreach (KeyValuePair<int, int> pair in (Dictionary<int, int>)Application["PaginationTable"])
请注意,保存键入KeyValuePair<int, int>
可以替换为var
,因为编译器可以在编译时计算出正确的类型。
还要注意该行
Application["PaginationTable"] = new Dictionary<int, int>();
是多余的,因为你只需将另一个对象分配给它。