带有SiteMapPreserveRouteData的MVCSiteMapProvider面包屑随第二项消失

时间:2013-06-21 10:57:43

标签: c# asp.net-mvc mvcsitemapprovider

我有一个MVC项目,我正在使用MVCSiteMapProvider实现面包屑。

我的MVC.sitemap如下:

<mvcSiteMapNode title="Index" controller="Index" action="Index" key="Index">
    <mvcSiteMapNode title="Parent" controller="Parent" action="View" key="Parent" >
      <mvcSiteMapNode title="Child" controller="Child" action="View" />
    </mvcSiteMapNode>
</mvcSiteMapNode>

我已添加到_layout视图

@Html.MvcSiteMap().SiteMapPath()

当我返回父项时,我需要保留参数以检索正确的项目。为此,我在View操作中添加了注释SiteMapPreserveRouteData:

[SiteMapPreserveRouteData]
public ActionResult View(Guid id)

现在,我可以使用我的痕迹导航。

问题是它只适用于第一项。当我更改项目时,面包屑消失......

样品: 我导航到父p2 - &gt;子c1,在我返回索引并选择父p1之后,父窗口的View页面不显示痕迹。

如果删除注释SiteMapPreserveRouteData,但是面包屑丢失了ID,那就不会发生..

我在做什么?有些想法?

由于

1 个答案:

答案 0 :(得分:1)

问题很可能就是你的方法。我建议根本不建议使用SiteMapPreserveRouteData - 这是一种蛮力,更重要的是,它的设计方法存在缺陷。

我创建了一篇文章,深入探讨了如何跟踪用户在站点地图中的位置 - How to Make MvcSiteMapProvider Remember a User’s Position。理解该帖子中的信息是使面包屑路径不会消失的关键。