2009-01-14 16 views
0

如果我將xml文件(名稱 - >值)的內容存儲在會話集合中,那麼在另一個頁面上訪問它的最佳方式是什麼(即不是一個下面的腳本運行)。如何使用C#中的SessionStateItemCollection(ASP.net)

是否只是在每個頁面上創建SessionStateItemCollection的新實例的工作,我想訪問該集合?

System.Xml.XmlDocument oXmlDoc = new System.Xml.XmlDocument(); 

      oXmlDoc.Load(Server.MapPath("xml.xml")); //load XML file 

      XmlNode root = oXmlDoc.DocumentElement; 

      SessionStateItemCollection PSess = new SessionStateItemCollection(); //session collection 

      for (int x = 0; x < root.ChildNodes.Count; x++) //loop through children and add to session 
      { 
       PSess[root.ChildNodes.Item(x).Name] = root.ChildNodes.Item(x).InnerText; //add xml values to session 

      } 

回答

0

如果這是在ASP.NET中,那麼我不明白爲什麼要創建一個新的SessionStateItemCollection對象。在這種情況下,您需要處理自己在頁面之間持續存在的問題。

ASP.NET通過頁面的Session對象或HttpContext.Current對象提供對SessionStateItemCollection對象的訪問,如果您想從類中使用此對象。您可以通過Session對象將鍵值對存儲在那裏,並在隨後的頁面上從Session對象中檢索它們。

for (int i = 0; i < Session.Count; i++) 
{ 
    Response.Write(Session.Keys[i] + "-" + Session[i].ToString()); 
} 

我將重寫代碼如下

System.Xml.XmlDocument oXmlDoc = new System.Xml.XmlDocument(); 

oXmlDoc.Load(Server.MapPath("xml.xml")); //load XML file 

XmlNode root = oXmlDoc.DocumentElement; 

for (int x = 0; x < root.ChildNodes.Count; x++) //loop through children and add to session 
{ 
    Session[root.ChildNodes.Item(x).Name] = root.ChildNodes.Item(x).InnerText; //add xml values to session 
} 

現在,您可以使用Session對象的另一個頁面訪問的內容(下面的代碼將通過會話存儲一切interate)

+0

謝謝,有趣的是,我刪除了該行,以支持關於sessioncollection的一些錯誤信息。 – 2009-01-14 11:46:22