Fix PageRouteTransformerConvention with custom page routes (#8576)

This commit is contained in:
James Newton-King 2018-10-10 18:33:30 +13:00 committed by GitHub
parent 6cee2431f1
commit 9daf5ff7a4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 20 additions and 10 deletions

View File

@ -129,8 +129,10 @@ namespace Microsoft.AspNetCore.Mvc.RazorPages.Infrastructure
var pageRouteMetadata = selectorModel.EndpointMetadata.OfType<PageRouteMetadata>().SingleOrDefault();
if (pageRouteMetadata == null)
{
// Selector does not have expected metadata. Should never reach here
throw new InvalidOperationException("Page selector did not have page route metadata.");
// Selector does not have expected metadata
// This selector was likely configured by AddPageRouteModelConvention
// Use the existing explicitly configured template
return selectorModel.AttributeRouteModel.Template;
}
var segments = pageRouteMetadata.PageRoute.Split('/');

View File

@ -147,6 +147,18 @@ namespace Microsoft.AspNetCore.Mvc.FunctionalTests
Assert.Equal("Hello from World", body);
}
[Fact]
public async Task Page_PageRouteTransformer_PageWithConfiguredRoute()
{
// Arrange & Act
var response = await Client.GetAsync("http://localhost/PageRouteTransformer/NewConventionRoute/World");
// Assert
Assert.Equal(HttpStatusCode.OK, response.StatusCode);
var body = await response.Content.ReadAsStringAsync();
Assert.Equal("Hello from World", body);
}
[Fact]
public virtual async Task ConventionalRoutedController_ActionIsReachable()
{

View File

@ -1,4 +1,2 @@
@page "{id?}"
@model RoutingWebSite.Pages.LGAnotherPageModel
@{
}

View File

@ -1,4 +1,2 @@
@page "{id?}"
@model BasicWebSite.Pages.LGPageModel
@{
}

View File

@ -0,0 +1,2 @@
@page "ExtraPath/{id?}"
Hello from @ViewContext.RouteData.Values["id"]

View File

@ -1,4 +1,2 @@
@page "ExtraPath/{id?}"
@{
}
Hello from @ViewContext.RouteData.Values["id"]

View File

@ -28,6 +28,7 @@ namespace RoutingWebSite
})
.AddRazorPagesOptions(options =>
{
options.Conventions.AddPageRoute("/PageRouteTransformer/PageWithConfiguredRoute", "/PageRouteTransformer/NewConventionRoute/{id?}");
options.Conventions.AddFolderRouteModelConvention("/PageRouteTransformer", model =>
{
pageRouteTransformerConvention.Apply(model);

View File

@ -26,6 +26,7 @@ namespace RoutingWebSite
.AddMvc()
.AddRazorPagesOptions(options =>
{
options.Conventions.AddPageRoute("/PageRouteTransformer/PageWithConfiguredRoute", "/PageRouteTransformer/NewConventionRoute/{id?}");
options.Conventions.AddFolderRouteModelConvention("/PageRouteTransformer", model =>
{
pageRouteTransformerConvention.Apply(model);