/// <inheritdoc/> public override void OnActionExecuting(ActionExecutingContext context) { var controller = (Controller)context.Controller; controller.ViewData.InitializeBreadcrumbs(); if (this.active && !string.IsNullOrEmpty(this.action) && string.IsNullOrEmpty(this.controller)) { this.controller = ((Controller)context.Controller).GetType().Name.Replace("Controller", string.Empty); } string parentRouteKey = null; string parentRouteValue = null; if (!string.IsNullOrEmpty(this.ParentRouteKey) && context.Controller.GetType().GetProperties().Any(x => x.Name == this.ParentRouteKey)) { parentRouteKey = context .Controller .GetType() .GetProperty(this.ParentRouteKey) .GetValue(context.Controller)? .ToString(); if (!string.IsNullOrEmpty(parentRouteKey)) { parentRouteValue = context.HttpContext.GetRouteValue(parentRouteKey)?.ToString(); } } if (this.UseParentController) { this.controller = ((IChildController)context.Controller).ParentController.Replace("Controller", string.Empty); } var currentBreadcrumb = new BreadcrumbItemViewModel(context) { Title = this.title, Controller = this.controller, Action = this.action, ParameterName = this.parameterName, ParameterValue = this.parameterValue, Order = this.order, Active = this.active, ParentReferenceKey = parentRouteKey, ParentReferenceValue = parentRouteValue, }; controller.ViewData.AddBreadcrumb(currentBreadcrumb); base.OnActionExecuting(context); }
protected virtual BreadcrumbItemViewModel CreateParentPageItem(IPage parentPage) { var itemVM = new BreadcrumbItemViewModel { DisplayName = parentPage.MenuTitle }; var pagesConfiguration = SiteConfiguration.GetPagesConfiguration(); if (pagesConfiguration != null && parentPage.PageTypeId != pagesConfiguration.FolderId) { itemVM.Url = _pageService.GetPageUrl(parentPage); } return(itemVM); }
private static BreadcrumbViewModel BuildBreadcrumb(string segmentPath, BreadcrumbItemModel?jpBreadcrumbItemModel, string jobGroupTitle) { var viewModel = new BreadcrumbViewModel { Breadcrumbs = new List <BreadcrumbItemViewModel>() { new BreadcrumbItemViewModel() { Route = "/", Title = "Home", }, }, }; if (jpBreadcrumbItemModel?.Title != null && !string.IsNullOrWhiteSpace(jpBreadcrumbItemModel.Route)) { var articlePathViewModel = new BreadcrumbItemViewModel { Route = jpBreadcrumbItemModel.Route, Title = jpBreadcrumbItemModel.Title, }; viewModel.Breadcrumbs.Add(articlePathViewModel); } var finalPathViewModel = new BreadcrumbItemViewModel { Route = $"/{segmentPath}", Title = $"Job group: {jobGroupTitle}", }; viewModel.Breadcrumbs.Add(finalPathViewModel); viewModel.Breadcrumbs.Last().AddHyperlink = false; return(viewModel); }
protected static BreadcrumbViewModel BuildBreadcrumb(string segmentPath, BreadcrumbItemModel?breadcrumbItemModel) { const string BradcrumbTitle = "Contact us"; var viewModel = new BreadcrumbViewModel { Breadcrumbs = new List <BreadcrumbItemViewModel>() { new BreadcrumbItemViewModel() { Route = "/", Title = "Home", }, new BreadcrumbItemViewModel() { Route = $"/{segmentPath}", Title = BradcrumbTitle, }, }, }; if (breadcrumbItemModel?.Title != null && !breadcrumbItemModel.Title.Equals(BradcrumbTitle, StringComparison.OrdinalIgnoreCase) && !string.IsNullOrWhiteSpace(breadcrumbItemModel.Route)) { var articlePathViewModel = new BreadcrumbItemViewModel { Route = $"/{segmentPath}/{breadcrumbItemModel.Route}", Title = breadcrumbItemModel.Title, }; viewModel.Breadcrumbs.Add(articlePathViewModel); } viewModel.Breadcrumbs.Last().AddHyperlink = false; return(viewModel); }
/// <summary> /// Add a breadcrumb into the ViewData. /// </summary> /// <param name="viewData"></param> /// <param name="breadcrumb"></param> /// <returns></returns> public static ViewDataDictionary AddBreadcrumb(this ViewDataDictionary viewData, BreadcrumbItemViewModel breadcrumb) { if (viewData[BreadcrumbsKey] != null) { ((List <BreadcrumbItemViewModel>)viewData[BreadcrumbsKey]).Add(breadcrumb); } return(viewData); }