| File: DependencyInjection\MvcRazorPagesMvcBuilderExtensions.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.Hosting; using Microsoft.AspNetCore.Mvc.RazorPages; using Resources = Microsoft.AspNetCore.Mvc.RazorPages.Resources; namespace Microsoft.Extensions.DependencyInjection; /// <summary> /// Extensions methods for configuring Razor Pages via an <see cref="IMvcBuilder"/>. /// </summary> public static class MvcRazorPagesMvcBuilderExtensions { /// <summary> /// Configures a set of <see cref="RazorPagesOptions"/> for the application. /// </summary> /// <param name="builder">The <see cref="IMvcBuilder"/>.</param> /// <param name="setupAction">An action to configure the <see cref="RazorPagesOptions"/>.</param> /// <returns>The <see cref="IMvcBuilder"/>.</returns> public static IMvcBuilder AddRazorPagesOptions( this IMvcBuilder builder, Action<RazorPagesOptions> setupAction) { ArgumentNullException.ThrowIfNull(builder); ArgumentNullException.ThrowIfNull(setupAction); builder.Services.Configure(setupAction); return builder; } /// <summary> /// Configures Razor Pages to use the specified <paramref name="rootDirectory"/>. /// </summary> /// <param name="builder">The <see cref="IMvcCoreBuilder"/>.</param> /// <param name="rootDirectory">The application relative path to use as the root directory.</param> /// <returns>The <see cref="IMvcBuilder"/>.</returns> public static IMvcBuilder WithRazorPagesRoot(this IMvcBuilder builder, string rootDirectory) { ArgumentNullException.ThrowIfNull(builder); ArgumentException.ThrowIfNullOrEmpty(rootDirectory); if (rootDirectory[0] != '/') { throw new ArgumentException(Resources.PathMustBeRootRelativePath, nameof(rootDirectory)); } builder.Services.Configure<RazorPagesOptions>(options => options.RootDirectory = rootDirectory); return builder; } /// <summary> /// Configures Razor Pages to be rooted at the content root (<see cref="IHostingEnvironment.ContentRootPath"/>). /// </summary> /// <param name="builder">The <see cref="IMvcCoreBuilder"/>.</param> /// <returns>The <see cref="IMvcBuilder"/>.</returns> public static IMvcBuilder WithRazorPagesAtContentRoot(this IMvcBuilder builder) { ArgumentNullException.ThrowIfNull(builder); builder.Services.Configure<RazorPagesOptions>(options => options.RootDirectory = "/"); return builder; } }