Asp.net 生成自定义站点地图时出错
我正在尝试构建一个自定义站点地图 我在这个网站上查看代码 我已经尽可能地把它转换成vb.net 这是我的密码Asp.net 生成自定义站点地图时出错,asp.net,xml,vb.net,Asp.net,Xml,Vb.net,我正在尝试构建一个自定义站点地图 我在这个网站上查看代码 我已经尽可能地把它转换成vb.net 这是我的密码 Partial Class Main Inherits StaticSiteMapProvider Dim conn As New ConnectionVB Dim _rootNode As SiteMapNode = Nothing Dim _siteMapFileName As String Dim SiteMapNodeName As String = "siteMapNod
Partial Class Main
Inherits StaticSiteMapProvider
Dim conn As New ConnectionVB
Dim _rootNode As SiteMapNode = Nothing
Dim _siteMapFileName As String
Dim SiteMapNodeName As String = "siteMapNode"
Public Sub DynamicSiteMapProvider()
End Sub
Public Shadows Function RootNode() As SiteMapNode
Return BuildSiteMap()
End Function
Public Overrides Sub Initialize(name As String, attributes As NameValueCollection)
//Me.Initialize(name, attributes)
_siteMapFileName = attributes("siteMapFile")
End Sub
Protected Overrides Function GetRootNodeCore() As SiteMapNode
Return RootNode()
End Function
Protected Overrides Sub clear()
SyncLock Me
_rootNode = Nothing
//Me.clear()
End SyncLock
End Sub
Public Overrides Function BuildSiteMap() As SiteMapNode
SyncLock Me
If _rootNode Is Nothing Then
clear()
Dim siteMapXml As XmlDocument = LoadSiteMapXml()
Dim rootElement As XmlElement = CType(siteMapXml.GetElementsByTagName(SiteMapNodeName)(0), XmlElement)
AddDynamicNodes(rootElement)
GenerateSiteMapNodes(rootElement)
End If
End SyncLock
Return _rootNode
End Function
Private Function LoadSiteMapXml() As XmlDocument
Dim siteMapXml As XmlDocument = New XmlDocument()
siteMapXml.Load(AppDomain.CurrentDomain.BaseDirectory + _siteMapFileName)
Return siteMapXml
End Function
Protected Sub AddDynamicNodes(rootElement As XmlElement)
Dim teams As XmlElement = AddDynamicChildElement(rootElement, "", "FootballTeams", "List of football team")
End Sub
Protected Function AddDynamicChildElement(parentElement As XmlElement, url As String, title As String, description As String) As XmlElement
Dim childElement As XmlElement = parentElement.OwnerDocument.CreateElement(SiteMapNodeName)
childElement.SetAttribute("url", url)
childElement.SetAttribute("title", title)
childElement.SetAttribute("description", description)
parentElement.AppendChild(childElement)
Return childElement
End Function
Protected Sub GenerateSiteMapNodes(rootElement As XmlElement)
_rootNode = GetSiteMapNodeFromElement(rootElement)
AddNode(_rootNode)
CreateChildNodes(rootElement, _rootNode)
End Sub
Protected Sub CreateChildNodes(parentElement As XmlElement, parentNode As SiteMapNode)
For Each XmlElement As XmlNode In parentElement.ChildNodes
If XmlElement.Name = SiteMapNodeName Then
Dim childNode As SiteMapNode = GetSiteMapNodeFromElement(CType(XmlElement, XmlElement))
AddNode(childNode, parentNode)
CreateChildNodes(CType(XmlElement, XmlElement), childNode)
End If
Next
End Sub
Protected Function GetSiteMapNodeFromElement(rootElement As XmlElement) As SiteMapNode
Dim newSiteMapNode As SiteMapNode
Dim url As String = rootElement.GetAttribute("url")
Dim title As String = rootElement.GetAttribute("title")
Dim description As String = rootElement.GetAttribute("description")
newSiteMapNode = New SiteMapNode(Me, (url + title).GetHashCode().ToString(), url, title, description)
Return newSiteMapNode
End Function
End Class
我犯了这样的错误
System.ArgumentException: Provider name cannot be null or empty.
我不知道这个错误的原因是什么
有人能帮我吗
谢谢你的帮助
谢谢
PS:如果我的英语搞砸了,很抱歉,请确保您已将其添加到web配置中
<system.web>
<siteMap defaultProvider="main">
<providers>
<add siteMapFile="Web.sitemap" name="main" type="System.Web.XmlSiteMapProvider"/>
</providers>
</siteMap>
请确保您已在web配置中添加此项
<system.web>
<siteMap defaultProvider="main">
<providers>
<add siteMapFile="Web.sitemap" name="main" type="System.Web.XmlSiteMapProvider"/>
</providers>
</siteMap>
aw谢谢,这真的很有用!!!事实上,我已经在我的web.config上添加了它,但是我在示例中看到的类型与他的名称空间和类的名称完全相同……无论如何,谢谢你再给我一次机会,嗯,你能进一步帮助我吗???我已经照你的建议做了,效果很好。。但是现在,这段代码没有做任何事情..我犯了什么错误吗?你需要检查你的类,确保在将它转换为vb时没有遗漏什么。然后需要再次将type=“System.Web.XmlSiteMapProvider”from设置为此类type=“harryott.Web.dynamicItemApprovider”,如本文所示。是的,我缺少1个类..public dynamicItemApprovider():base(){}。我不知道如何在vb.net中做到这一点…有什么建议吗?哦,谢谢,这真的很有用!!!事实上,我已经在我的web.config上添加了它,但是我在示例中看到的类型与他的名称空间和类的名称完全相同……无论如何,谢谢你再给我一次机会,嗯,你能进一步帮助我吗???我已经照你的建议做了,效果很好。。但是现在,这段代码没有做任何事情..我犯了什么错误吗?你需要检查你的类,确保在将它转换为vb时没有遗漏什么。然后需要再次将type=“System.Web.XmlSiteMapProvider”from设置为此类type=“harryott.Web.dynamicItemApprovider”,如本文所示。是的,我缺少1个类..public dynamicItemApprovider():base(){}。我不知道如何在vb.net中做到这一点…有什么建议吗??