private void AddAreaPageModels(PageRouteModelProviderContext context) { foreach (var item in _razorFileSystem.EnumerateItems(AreaRootDirectory)) { var relativePath = item.CombinedPath; if (context.RouteModels.Any(m => string.Equals(relativePath, m.RelativePath, StringComparison.OrdinalIgnoreCase))) { // A route for this file was already registered either by the CompiledPageRouteModel. // Skip registering an additional entry. continue; } if (!PageDirectiveFeature.TryGetPageDirective(_logger, item, out var routeTemplate)) { // .cshtml pages without @page are not RazorPages. continue; } var routeModel = _routeModelFactory.CreateAreaRouteModel(relativePath, routeTemplate); if (routeModel != null) { context.RouteModels.Add(routeModel); } } }
private void AddPageModels(PageRouteModelProviderContext context) { foreach (var item in _razorFileSystem.EnumerateItems(_pagesOptions.RootDirectory)) { var relativePath = item.CombinedPath; if (context.RouteModels.Any(m => string.Equals(relativePath, m.RelativePath, StringComparison.OrdinalIgnoreCase))) { // A route for this file was already registered either by the CompiledPageRouteModel or as an area route. // by this provider. Skip registering an additional entry. // Note: We're comparing duplicates based on root-relative paths. This eliminates a page from being discovered // by overlapping area and non-area routes where ViewEnginePath would be different. continue; } if (!PageDirectiveFeature.TryGetPageDirective(_logger, item, out var routeTemplate)) { // .cshtml pages without @page are not RazorPages. continue; } var routeModel = _routeModelFactory.CreateRouteModel(relativePath, routeTemplate); if (routeModel != null) { context.RouteModels.Add(routeModel); } } }