Не могу найти файл - PullRequest
       16

Не могу найти файл

0 голосов
/ 27 сентября 2010

Я работаю над пользовательской системой меню в asp.net, которая на лету заполняет горизонтальное меню на основе того, какой пункт меню выбран из главного меню веб-сайта.

Это 2-е меню заполняется изПользовательский XML-файл в корневом каталоге сайта.(Подробнее см. http://loganyoung.wordpress.com/2010/06/03/asp-net-horizontal-submenu-from-xml/).

В то время, когда я писал этот пост, он работал, но моя среда разработки изменилась, и теперь я получаю сообщение об ошибке, сообщающее, что XMLфайл не может быть найден.

Вот мой код:

Imports System.Xml

Partial Class Site
    Inherits System.Web.UI.MasterPage


    Protected Sub Menu1_MenuItemClick(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.MenuEventArgs) Handles Menu1.MenuItemClick
        Select Case e.Item.Value.ToString
            Case "Team"
                Dim doc As New XmlDocument
                doc.Load("~/Submenus.xml")

                Dim NameNodes As XmlNodeList = doc.SelectNodes("/TeamMenu/item/name")
                Dim URLNodes As XmlNodeList = doc.SelectNodes("/TeamMenu/item/url")

                If NameNodes.Count = URLNodes.Count Then
                    For i As Integer = 0 To NameNodes.Count - 1
                        Dim m As New MenuItem
                        m.Text = NameNodes.Item(i).FirstChild.InnerText
                        m.NavigateUrl = URLNodes.Item(i).FirstChild.InnerText

                        Menu2.Items.Add(m)
                    Next
                End If
            Case "Investments"
                Dim doc As New XmlDocument
                doc.Load("~/Submenus.xml")

                Dim NameNodes As XmlNodeList = doc.SelectNodes("/InvestmentsMenu/item/name")
                Dim URLNodes As XmlNodeList = doc.SelectNodes("/InvestmentsMenu/item/url")

                If NameNodes.Count = URLNodes.Count Then
                    For i As Integer = 0 To NameNodes.Count - 1
                        Dim m As New MenuItem
                        m.Text = NameNodes.Item(i).FirstChild.InnerText
                        m.NavigateUrl = URLNodes.Item(i).FirstChild.InnerText

                        Menu2.Items.Add(m)
                    Next
                End If
            Case "Social Responsibility"
                Dim doc As New XmlDocument
                doc.Load("~/Submenus.xml")

                Dim NameNodes As XmlNodeList = doc.SelectNodes("/InvestmentsMenu/item/name")
                Dim URLNodes As XmlNodeList = doc.SelectNodes("/InvestmentsMenu/item/url")

                If NameNodes.Count = URLNodes.Count Then
                    For i As Integer = 0 To NameNodes.Count - 1
                        Dim m As New MenuItem
                        m.Text = NameNodes.Item(i).FirstChild.InnerText
                        m.NavigateUrl = URLNodes.Item(i).FirstChild.InnerText

                        Menu2.Items.Add(m)
                    Next
                End If
        End Select
    End Sub
End Class

И вот ошибка, которую я получаю:
Could not find a part of the path 'c:\windows\system32\inetsrc\~\Submenus.xml'.

Меню2 простополностью пустой <asp:Menu> элемент управления прямо под главным меню на странице.

Может кто-нибудь сказать мне, что я делаю не так, пожалуйста?

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 27 сентября 2010

XmlDocument.Load ожидает путь к файлу, где вы указываете виртуальный путь.Попробуйте изменить это на это:

doc.Load(Page.MapPath("~/Submenus.xml"))
0 голосов
/ 27 сентября 2010

Если вы используете doc.Load ("~ / Submenus.xml"), этот xml должен быть в вашем проекте. В противном случае вы должны использовать server.mappath.

...