如果我的XML文件的内容存储(名称 - >值)。一个会话集合,在什么访问它的另一个页面上的最佳方式(即不说,下面的脚本上运行的一个)

时,它只是一个在每个页面上创建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 

            }
有帮助吗?

解决方案

如果这是ASP.NET然后我不明白你为什么会创建一个新的SessionStateItemCollection对象。在这种情况下,你会需要处理自己的网页上始终存在这一点。

ASP.NET提供经由该页面的Session对象或者如果wnating使用这个从一类对象HttpContext.Current访问一个SessionStateItemCollection对象。您可以在那里通过Session对象存储的键值对,并从随后的页面Session对象进行检索。

如下我想重写代码

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)

for (int i = 0; i < Session.Count; i++)
{
    Response.Write(Session.Keys[i] + "-" + Session[i].ToString());
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top