在 mvc dotnetcore 中处理面包屑

Nul*_*ter 9 asp.net-mvc breadcrumbs asp.net-core

我正在开发一个(MVC dotnetcore)有很多页面和流程的网站。用户可以通过多种不同的方式访问单个页面。当用户想要返回时我被卡住了,而我没有任何跟踪它的最后一个 URL。而且我越来越感到困惑的是如何处理这种情况呢?

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

但在这种情况下,我必须在每个屏幕上执行可重复的代码,或者可能针对每个 get/post 调用。

或者

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

就像如果用户从索引移动管理员,就会有这样的事情

Index >> Admin
Run Code Online (Sandbox Code Playgroud)

并且为了进一步

Index >> Admin >> ManageUsers 
Run Code Online (Sandbox Code Playgroud)

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

遵循哪种方法比较好?任何形式的帮助将不胜感激。

Hay*_*tam 9

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

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

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

PS:默认节点始终存在,即使没有指定FromAction.
有关 github 链接或博客文章的更多信息。

编辑:2.0.0 版的更新示例


Ahm*_*mad 0

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