There is only one minor improvement that I made to this and that is the ability to pass route values to Parent Nodes from children.
In the Example of Home -> List -> Detail -> History Where Detail's action needs route values passed else the breadcrumbs will break on History.
On the Parents's Action populate RouteValueKeys with the keys needed, On the Child set ViewData.[Key]'s value and a non-node-editing link change will occur. This will also pick up the Area name to preserive previous functionality.
-M Grdanc
-Feel free to improve.
=====================================================================================================================================
A utility library for ASP.NET Core (both MVC and Razor Pages) websites to easily add and customize breadcrumbs.
When I created SmartBreadcrumbs, it only worked on MVC websites.
Razor Pages then came out and became "more popular", so I rewrote the whole code base, cleaned the project's structure, wrote unit tests and now, SmartBreadcrumbs works on both MVC and Razor Pages websites, even on the same project.
If you're interested in the README of the old version, it's available here: OLD_README.
Badges | |
---|---|
Build | |
NuGet | |
License |
- Wiki: A list of all the possible things you can do with SmartBreadcrumbs.
- RazorPagesAndMvc: An example project containing both MVC and Razor Pages pages. Check it out to see how SmartBreadcrumbs works.
Install the package using NuGet
Install-Package SmartBreadcrumbs
After you have setup your breadcrumbs (using the Breadcrumb
and DefaultBreadcrumb
attributes), go ahead and add SmartBreadcrumbs in your services:
services.AddBreadcrumbs(GetType().Assembly);
SmartBreadcrumbs comes with a breadcrumb
tag that renders the breadcrumbs for you, to use it:
- In
_ViewImports.cshtml
, add@addTagHelper *, SmartBreadcrumbs
. - In your
_Layout.cshml
(or specific pages), use<breadcrumb></breadcrumb>
.
You can specify options when you initialize SmartBreadcrumbs:
services.AddBreadcrumbs(GetType().Assembly, options =>
{
options.TagName = "nav";
options.TagClasses = "";
options.OlClasses = "breadcrumb";
options.LiClasses = "breadcrumb-item";
options.ActiveLiClasses = "breadcrumb-item active";
options.SeparatorElement = "<li class=\"separator\">/</li>";
});
Check out the documentation if you need more customization!
- You can manually create and set breadcrumb nodes, useful when you have dynamic breadcrumbs (e.g. E-Commerce website).
- You can get access to the
BreadcrumbManager
and create your ownTagHelper
for example.
Credits: zHaytam and the contributors.
License: SmartBreadcrumbs is open source, licensed under the MIT License.