From c89f0a1e436148e04e6ed33695d08cb41cb46efd Mon Sep 17 00:00:00 2001 From: Pranav K Date: Tue, 20 Jun 2017 12:33:33 -0700 Subject: [PATCH] Allow AddPageRoute to route to pages root. (#6412) * Allow AddPageRoute to route to pages root. Fixes #6338 --- .../RazorPagesOptionsExtensions.cs | 4 ++-- .../RazorPagesTest.cs | 13 +++++++++++++ .../RazorPagesWebSite/Pages/NotTheRoot.cshtml | 2 ++ test/WebSites/RazorPagesWebSite/Startup.cs | 1 + 4 files changed, 18 insertions(+), 2 deletions(-) create mode 100644 test/WebSites/RazorPagesWebSite/Pages/NotTheRoot.cshtml diff --git a/src/Microsoft.AspNetCore.Mvc.RazorPages/DependencyInjection/RazorPagesOptionsExtensions.cs b/src/Microsoft.AspNetCore.Mvc.RazorPages/DependencyInjection/RazorPagesOptionsExtensions.cs index fa8d0f142a..c7b46332db 100644 --- a/src/Microsoft.AspNetCore.Mvc.RazorPages/DependencyInjection/RazorPagesOptionsExtensions.cs +++ b/src/Microsoft.AspNetCore.Mvc.RazorPages/DependencyInjection/RazorPagesOptionsExtensions.cs @@ -193,9 +193,9 @@ namespace Microsoft.Extensions.DependencyInjection throw new ArgumentException(Resources.ArgumentCannotBeNullOrEmpty, nameof(pageName)); } - if (string.IsNullOrEmpty(route)) + if (route == null) { - throw new ArgumentException(Resources.ArgumentCannotBeNullOrEmpty, nameof(route)); + throw new ArgumentNullException(nameof(route)); } options.Conventions.Add(new PageConvention(pageName, model => diff --git a/test/Microsoft.AspNetCore.Mvc.FunctionalTests/RazorPagesTest.cs b/test/Microsoft.AspNetCore.Mvc.FunctionalTests/RazorPagesTest.cs index 196563e4cd..ac243614da 100644 --- a/test/Microsoft.AspNetCore.Mvc.FunctionalTests/RazorPagesTest.cs +++ b/test/Microsoft.AspNetCore.Mvc.FunctionalTests/RazorPagesTest.cs @@ -1037,6 +1037,19 @@ Microsoft.AspNetCore.Mvc.ViewFeatures.ViewDataDictionary`1[AspNetCore._InjectedP Assert.StartsWith(expected, response.Trim()); } + [Fact] + public async Task PagesCanByRoutedToApplicationRoot_ViaAddPageRoute() + { + // Arrange + var expected = "Hello from NotTheRoot"; + + // Act + var response = await Client.GetStringAsync(""); + + // Assert + Assert.StartsWith(expected, response.Trim()); + } + private async Task AddAntiforgeryHeaders(HttpRequestMessage request) { var getResponse = await Client.GetAsync(request.RequestUri); diff --git a/test/WebSites/RazorPagesWebSite/Pages/NotTheRoot.cshtml b/test/WebSites/RazorPagesWebSite/Pages/NotTheRoot.cshtml new file mode 100644 index 0000000000..f919c9d628 --- /dev/null +++ b/test/WebSites/RazorPagesWebSite/Pages/NotTheRoot.cshtml @@ -0,0 +1,2 @@ +@page +Hello from NotTheRoot diff --git a/test/WebSites/RazorPagesWebSite/Startup.cs b/test/WebSites/RazorPagesWebSite/Startup.cs index d4c369bfb1..04e213fdc9 100644 --- a/test/WebSites/RazorPagesWebSite/Startup.cs +++ b/test/WebSites/RazorPagesWebSite/Startup.cs @@ -20,6 +20,7 @@ namespace RazorPagesWebSite options.AuthorizeFolder("/Pages/Admin"); options.AllowAnonymousToPage("/Pages/Admin/Login"); options.AddPageRoute("/HelloWorldWithRoute", "Different-Route/{text}"); + options.AddPageRoute("/Pages/NotTheRoot", string.Empty); }) .WithRazorPagesAtContentRoot(); }