コード例 #1
0
        public override void OnResultExecuting(ResultExecutingContext filterContext)
        {
            var viewResult = filterContext.Result as ViewResult;
            var controller = filterContext.Controller as ErrorditeController;

            if (controller == null || viewResult == null)
            {
                return;
            }

            var breadcrumbs = Breadcrumbs.GetBreadcrumbsForRoute(_breadcrumbId, controller.Url);

            if (breadcrumbs != null)
            {
                if (_overrideBreadcrumbId.HasValue && _cookieKey.IsNotNullOrEmpty())
                {
                    var value = controller.CookieManager.Get(_cookieKey);

                    if (value.IsNotNullOrEmpty())
                    {
                        var overriddenCrumbs = breadcrumbs.Select(breadcrumb => breadcrumb.Id == _overrideBreadcrumbId.Value ?
                                                                  new Breadcrumb(breadcrumb.Id, breadcrumb.Link + value, breadcrumb.Title) :
                                                                  breadcrumb).ToList();

                        viewResult.ViewData.SetBreadcrumbs(overriddenCrumbs);
                    }
                    else
                    {
                        viewResult.ViewData.SetBreadcrumbs(breadcrumbs);
                    }
                }
                else
                {
                    controller.ViewData.SetBreadcrumbs(breadcrumbs);
                }
            }
        }