MvcSiteMapProvider 不更新站点地图标题

本文关键字:地图 标题 站点 更新 MvcSiteMapProvider | 更新日期: 2023-09-27 18:36:32

我目前正在使用MVCSiteMapProvider为我的网站生成面包屑。我正在通过在站点地图标题属性中传递视图数据值来创建站点地图标题。当我第一次访问链接时,它会根据需要创建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>

任何帮助将不胜感激

MvcSiteMapProvider 不更新站点地图标题

这可能是因为提供程序实现的缓存。您可以尝试将缓存持续时间(在 web.config 中)设置为 0,以禁用缓存,但这会对性能产生很大影响。

您应该升级到 MvcSiteMapProvider v4。这是一个缓存错误,现已修复。此外,您不应该使用 SiteMapPreserveRouteDataAttribute,因为它现在已被弃用。若要保留路由值,应改为在 ISiteMapNode 对象上使用保留的 RouteParameters。

请参阅标题为"如何使 MvcSiteMapProvider 记住用户的位置"的博客文章,以获取有关如何使用 preserve RouteParameters 的示例。