0

Webサイトのメインメニューから選択されたメニュー項目に基づいて、その場で水平メニューを設定するasp.netのカスタムメニューシステムに取り組んでいます。

この2番目のメニューは、WebサイトのルートディレクトリにあるカスタムXMLファイルから入力されます。(詳細については、 http://loganyoung.wordpress.com/2010/06/03/asp-net-horizo​​ntal-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'.

Menu2は<asp:Menu>、ページのメインメニューのすぐ下にある完全に空のコントロールです。

誰かが私が間違っていることを教えてもらえますか?

前もって感謝します。

4

2 に答える 2

1

XmlDocument.Load は、仮想パスを提供しているファイル パスを予期しています。これを次のように変更してみてください。

doc.Load(Page.MapPath("~/Submenus.xml"))
于 2010-09-27T10:27:39.110 に答える
0

doc.Load("~/Submenus.xml") を使用する場合、この xml はプロジェクト内にある必要があります。それ以外の場合は、server.mappath を使用する必要があります。

于 2010-09-27T11:19:59.447 に答える