| File: Builder\PageActionEndpointConventionBuilderResourceCollectionExtensions.cs | Web Access |
| Project: src\aspnetcore\src\Mvc\Mvc.RazorPages\src\Microsoft.AspNetCore.Mvc.RazorPages.csproj (Microsoft.AspNetCore.Mvc.RazorPages) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using Microsoft.AspNetCore.Components; using Microsoft.AspNetCore.Components.Endpoints; using Microsoft.AspNetCore.Routing; using static Microsoft.AspNetCore.Builder.RazorPagesEndpointRouteBuilderExtensions; namespace Microsoft.AspNetCore.Builder; /// <summary> /// Extensions for <see cref="PageActionEndpointConventionBuilder"/>. /// </summary> public static class PageActionEndpointConventionBuilderResourceCollectionExtensions { private const string ResourceCollectionResolverKey = "__ResourceCollectionResolver"; /// <summary> /// Adds a <see cref="ResourceAssetCollection"/> metadata instance to the endpoints. /// </summary> /// <param name="builder">The <see cref="PageActionEndpointConventionBuilder"/>.</param> /// <param name="manifestPath">The manifest associated with the assets.</param> /// <returns></returns> public static PageActionEndpointConventionBuilder WithStaticAssets( this PageActionEndpointConventionBuilder builder, string? manifestPath = null) { ArgumentNullException.ThrowIfNull(builder); if (builder.Items.TryGetValue(EndpointRouteBuilderKey, out var endpointBuilder)) { var (resolver, registered) = builder.Items.TryGetValue(ResourceCollectionResolverKey, out var value) ? ((ResourceCollectionResolver)value, true) : (new ResourceCollectionResolver((IEndpointRouteBuilder)endpointBuilder), false); resolver.ManifestName = manifestPath; if (!registered) { builder.Items[ResourceCollectionResolverKey] = resolver; var collection = resolver.ResolveResourceCollection(); var importMap = resolver.ResolveImportMap(); builder.Add(endpointBuilder => { endpointBuilder.Metadata.Add(collection); endpointBuilder.Metadata.Add(importMap); }); } } return builder; } }