Fix PageRouteTransformerConvention with custom page routes (#8576)
This commit is contained in:
parent
6cee2431f1
commit
9daf5ff7a4
|
|
@ -129,8 +129,10 @@ namespace Microsoft.AspNetCore.Mvc.RazorPages.Infrastructure
|
||||||
var pageRouteMetadata = selectorModel.EndpointMetadata.OfType<PageRouteMetadata>().SingleOrDefault();
|
var pageRouteMetadata = selectorModel.EndpointMetadata.OfType<PageRouteMetadata>().SingleOrDefault();
|
||||||
if (pageRouteMetadata == null)
|
if (pageRouteMetadata == null)
|
||||||
{
|
{
|
||||||
// Selector does not have expected metadata. Should never reach here
|
// Selector does not have expected metadata
|
||||||
throw new InvalidOperationException("Page selector did not have page route metadata.");
|
// This selector was likely configured by AddPageRouteModelConvention
|
||||||
|
// Use the existing explicitly configured template
|
||||||
|
return selectorModel.AttributeRouteModel.Template;
|
||||||
}
|
}
|
||||||
|
|
||||||
var segments = pageRouteMetadata.PageRoute.Split('/');
|
var segments = pageRouteMetadata.PageRoute.Split('/');
|
||||||
|
|
|
||||||
|
|
@ -147,6 +147,18 @@ namespace Microsoft.AspNetCore.Mvc.FunctionalTests
|
||||||
Assert.Equal("Hello from World", body);
|
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]
|
[Fact]
|
||||||
public virtual async Task ConventionalRoutedController_ActionIsReachable()
|
public virtual async Task ConventionalRoutedController_ActionIsReachable()
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,2 @@
|
||||||
@page "{id?}"
|
@page "{id?}"
|
||||||
@model RoutingWebSite.Pages.LGAnotherPageModel
|
@model RoutingWebSite.Pages.LGAnotherPageModel
|
||||||
@{
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,2 @@
|
||||||
@page "{id?}"
|
@page "{id?}"
|
||||||
@model BasicWebSite.Pages.LGPageModel
|
@model BasicWebSite.Pages.LGPageModel
|
||||||
@{
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1 @@
|
||||||
@page
|
@page
|
||||||
@{
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,2 @@
|
||||||
|
@page "ExtraPath/{id?}"
|
||||||
|
Hello from @ViewContext.RouteData.Values["id"]
|
||||||
|
|
@ -1,4 +1,2 @@
|
||||||
@page "ExtraPath/{id?}"
|
@page "ExtraPath/{id?}"
|
||||||
@{
|
|
||||||
}
|
|
||||||
Hello from @ViewContext.RouteData.Values["id"]
|
Hello from @ViewContext.RouteData.Values["id"]
|
||||||
|
|
@ -28,6 +28,7 @@ namespace RoutingWebSite
|
||||||
})
|
})
|
||||||
.AddRazorPagesOptions(options =>
|
.AddRazorPagesOptions(options =>
|
||||||
{
|
{
|
||||||
|
options.Conventions.AddPageRoute("/PageRouteTransformer/PageWithConfiguredRoute", "/PageRouteTransformer/NewConventionRoute/{id?}");
|
||||||
options.Conventions.AddFolderRouteModelConvention("/PageRouteTransformer", model =>
|
options.Conventions.AddFolderRouteModelConvention("/PageRouteTransformer", model =>
|
||||||
{
|
{
|
||||||
pageRouteTransformerConvention.Apply(model);
|
pageRouteTransformerConvention.Apply(model);
|
||||||
|
|
|
||||||
|
|
@ -26,6 +26,7 @@ namespace RoutingWebSite
|
||||||
.AddMvc()
|
.AddMvc()
|
||||||
.AddRazorPagesOptions(options =>
|
.AddRazorPagesOptions(options =>
|
||||||
{
|
{
|
||||||
|
options.Conventions.AddPageRoute("/PageRouteTransformer/PageWithConfiguredRoute", "/PageRouteTransformer/NewConventionRoute/{id?}");
|
||||||
options.Conventions.AddFolderRouteModelConvention("/PageRouteTransformer", model =>
|
options.Conventions.AddFolderRouteModelConvention("/PageRouteTransformer", model =>
|
||||||
{
|
{
|
||||||
pageRouteTransformerConvention.Apply(model);
|
pageRouteTransformerConvention.Apply(model);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue