0

我正在研究 asp.net 中的自定义菜单系统,该系统根据从网站主菜单中选择的菜单项动态填充水平菜单。

第二个菜单是从网站根目录中的自定义 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 回答