我目前正在使用MVCSiteMapProvider为我的网站生成Breadcrumb。我通过在SiteMapTitle属性中传递viewData值来创建站点地图标题。当我第一次访问链接时,它会根据需要创建breadCrumb,但是当我尝试重新访问我网站上的任何其他链接时,它会显示Viewdata的第一个访问值。代码看起来像这样
[SiteMapPreserveRouteData]
[SiteMapTitle("atlas")]
public ActionResult Index(string id ,string Atlas)
{
if (!string.IsNullOrEmpty(Atlas))
{
ViewData["atlas"] = Atlas;
}
Taxonomy taxonomy = db.GetTaxonomy(new Guid(ConfigurationManager.AppSettings["TherapyId"]));
var atlasList = taxonomy.GetTerms(id, 2);
return View(atlasList);
}
网站地图如下所示
<mvcSiteMapNode title="Home" controller="Home" action="Index" changeFrequency="Always" updatePriority="Normal" >
<mvcSiteMapNode title="Therapy" controller="Therapy" action="Index" >
<mvcSiteMapNode title="" controller="Atlas" action="Index" >
<mvcSiteMapNode title="" controller="Specialties" action="Index">
<mvcSiteMapNode title="" controller="Specialties" action="ViewImage" />
</mvcSiteMapNode>
</mvcSiteMapNode>
</mvcSiteMapNode>
任何帮助都将受到高度赞赏
答案 0 :(得分:0)
这可能是因为提供程序实现了缓存。您可以尝试尝试将cacheduration(在web.config中)设置为0,以禁用缓存,但这会对性能产生很大影响。
答案 1 :(得分:0)
您应该升级到MvcSiteMapProvider v4。这是一个缓存错误,现已修复。此外,您不应使用SiteMapPreserveRouteDataAttribute,因为它现在已被弃用。为了保留路由值,您应该在ISiteMapNode对象上使用savedRouteParameters。
有关如何使用savedRouteParameters的示例,请参阅标题为How to Make MvcSiteMapProvider Remember a User's Position的博客文章。