这SiteMap
是一个在所有用户之间共享的静态缓存对象。从技术上讲,所有属性在运行时都是只读的。但是,某些属性(例如Title
)是请求缓存的,因此您可以在运行时安全地更新它们而不会影响其他用户。
该Url
属性是一个特殊的属性,它通过 MVCUrlHelper
类(直接从您的路由驱动)动态构建 URL。将其设置为没有意义,Url.Action("Index")
因为这实际上是它本身所做的(除非您使用动态节点提供程序或自定义ISiteMapNodeProvider
- 这些是您加载节点配置的启动扩展点,因此属性是读写的) .
您只需在节点配置中设置正确的控制器和操作(可以是 XML、基于属性或基于代码),URL 将自行解析。
XML 示例
<mvcSiteMapNode title="Projects" controller="Project" action="Index"/>
注意:您需要考虑请求中的所有路由值,要么将它们添加为另一个属性,要么myId="123"
使用preservedRouteParameters="myId"
(告诉它myId
在构建 URL 时包含来自当前请求的)。有关使用这些选项的详细说明,请参阅本文。
注意:在配置中设置 URL 会SiteMap
有效地覆盖对该节点的 MVC 支持。所以,你根本不应该设置一个 URL,除非它是一个非 MVC URL。