public static PageInfo?FindPage(this IPageCatalog pageCatalog, ActionDescriptor actionDescriptor) { if (!(actionDescriptor is ControllerActionDescriptor controllerActionDescriptor)) { return(null); } var routeNames = s_routeNameCache.GetOrAdd(controllerActionDescriptor.MethodInfo, method => method.GetCustomAttributes <Attribute>() .OfType <IRouteTemplateProvider>() .Select(provider => provider.Name) .ToArray()); string routeName; PageInfo?page; for (int i = 0, n = routeNames.Length; i < n; i++) { if ((routeName = routeNames[i]) != null && (page = pageCatalog.GetPage(routeName)) != null) { return(page); } } return(null); }
public virtual void Initialize(ActionContext actionContext, IPageCatalog pages, IHtmlLocalizer htmlLocalizer) { PageInfo ??= pages.FindPage(actionContext.ActionDescriptor); Title ??= (GetTitle ?? PageInfo?.GetDefaultTitle)?.Invoke(actionContext.HttpContext, htmlLocalizer); }