我有一个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,那就不会发生..
我在做什么?有些想法?
由于
答案 0 :(得分:1)
问题很可能就是你的方法。我建议根本不建议使用SiteMapPreserveRouteData - 这是一种蛮力,更重要的是,它的设计方法存在缺陷。
我创建了一篇文章,深入探讨了如何跟踪用户在站点地图中的位置 - How to Make MvcSiteMapProvider Remember a User’s Position。理解该帖子中的信息是使面包屑路径不会消失的关键。