在mvc dotnetcore中处理面包屑

时间:2017-07-04 20:17:10

标签: asp.net-mvc asp.net-core breadcrumbs

我正在开发一个网页(MVC dotnetcore),它也有很多网页和流量。用户可以从许多不同的方式接近单个页面。当用户想要返回时我会陷入困境,而且我没有跟踪其最后一个URL。并且我对如何处理这种情况感到困惑?

  

我应该使用全局变量来跟踪最后一个URL吗?

但是在这种情况下,我要在每个屏幕上执行可重复的代码,或者可以用于每个get / post调用。

OR

  

我应该使用哪种面包屑结构?

就像用户从Index移动Admin一样,会出现类似这样的内容

Index >> Admin

进一步

Index >> Admin >> ManageUsers 

这些将是他们相关页面的链接。 但我不知道如何在mvc dotnetcore中处理这个问题?任何想法??

哪种方法很好用?任何形式的帮助将不胜感激。

2 个答案:

答案 0 :(得分:3)

我知道答案有点老了,但是在创建网站时遇到了同样的问题。我不想在两个项目中都重复代码,我希望面包屑可以处理多个级别,尤其是不在同一Controller中的级别。我最终创建了一个小程序包来管理所有这些程序:SmartBreadcrumbs(在Nuget中可用)。

它非常易于使用,您需要做的只是:

  1. 在您的服务配置中,添加 services.UseBreadcrumbs(GetType().Assembly);
  2. [DefaultBreadcrumb("My home")]添加到默认节点(通常是Home)
  3. [Breadcrumb("Contact me", FromAction = "Index" FromController = typeof(HomeController))]添加到其他级别(FromAction可以是Controller.Action的任意组合)

PS:即使未指定FromAction,也始终存在默认节点。
有关github链接或Blog post的更多信息。

编辑:更新了版本2.0.0的示例

答案 1 :(得分:1)

我建议你使用 breadcumb 。它是一个引导组件,您可以在前端管理它。在站点地图中,您必须做一些额外的工作。与sitemap相比,breadcumb很简单,只需要很少的努力,你也可以自定义它 breadcomb 请访问以上链接,这将对您有所帮助