private static BreadcrumbsViewModel GetBreadCrumbsViewModel(IUIViewHelper helper) { var pageViewModel = helper.HtmlHelper.ViewData.Model as IPageRoutableViewModel; if (pageViewModel != null) { return(GetBreadcrumbs(pageViewModel.PageRoutingHelper)); } return(null); }
/// <summary> /// Renders a list of breadcrumb links using the default template. /// </summary> public static HtmlString Breadcrumbs(this IUIViewHelper helper) { var vm = GetBreadCrumbsViewModel(helper); if (vm == null) { return(null); } var list = new TagBuilder("ol"); list.Attributes["id"] = "breadcrumbs"; list.Attributes["role"] = "navigation"; foreach (BreadcrumbViewModel breadCrumb in vm.Breadcrumbs) { var itemEl = new TagBuilder("li"); if (breadCrumb == vm.Breadcrumbs.First()) { itemEl.AddCssClass("first"); } if (breadCrumb == vm.Breadcrumbs.Last()) { itemEl.AddCssClass("last"); } if (breadCrumb.HasHref) { var link = new TagBuilder("a"); link.Attributes.Add("href", breadCrumb.Href); link.SetInnerText(breadCrumb.Title); itemEl.InnerHtml = link.ToString(); } else { itemEl.SetInnerText(breadCrumb.Title); } list.InnerHtml += itemEl.ToString(); } return(new HtmlString(list.ToString())); }
/// <summary> /// Renders a list of breadcrumb links using the specified template. /// </summary> /// <param name="partialViewName">The name of the partialview to use when rendering the breadcrumb view model</param> public static HtmlString Breadcrumbs(this IUIViewHelper helper, string partialViewName) { return(helper.HtmlHelper.Partial(partialViewName, GetBreadCrumbsViewModel(helper))); }