@@ -1214,6 +1214,53 @@ public void PopulateFilters_AddsPageHandlerPageFilter_ForModelDerivingFromTypeIm
12141214 [ ServiceFilter ( typeof ( IServiceProvider ) ) ]
12151215 private class DerivedFromPageModel : PageModel { }
12161216
1217+ [ Fact ]
1218+ public void PopulateHandlerMethods_Ignores_OverriddenPageModelLifecycleMethods ( )
1219+ {
1220+ // Arrange
1221+ var provider = CreateProvider ( ) ;
1222+ var typeInfo = typeof ( ModelOverridingPageModelLifecycle ) . GetTypeInfo ( ) ;
1223+ var pageModel = new PageApplicationModel ( new PageActionDescriptor ( ) , typeInfo , [ ] ) ;
1224+
1225+ // Act
1226+ provider . PopulateHandlerMethods ( pageModel ) ;
1227+
1228+ // Assert
1229+ // Only OnGet should be discovered as a handler. OnPageHandlerExecuting, OnPageHandlerExecuted,
1230+ // and OnPageHandlerSelected are lifecycle methods and should be excluded even when overridden.
1231+ var handlerMethods = pageModel . HandlerMethods ;
1232+ Assert . Collection (
1233+ handlerMethods ,
1234+ handler =>
1235+ {
1236+ Assert . Equal ( nameof ( ModelOverridingPageModelLifecycle . OnGet ) , handler . MethodInfo . Name ) ;
1237+ Assert . Equal ( "Get" , handler . HttpMethod ) ;
1238+ Assert . Null ( handler . HandlerName ) ;
1239+ } ) ;
1240+ }
1241+
1242+ private class ModelOverridingPageModelLifecycle : PageModel
1243+ {
1244+ public void OnGet ( )
1245+ {
1246+ }
1247+
1248+ public override void OnPageHandlerExecuting ( PageHandlerExecutingContext context )
1249+ {
1250+ base . OnPageHandlerExecuting ( context ) ;
1251+ }
1252+
1253+ public override void OnPageHandlerExecuted ( PageHandlerExecutedContext context )
1254+ {
1255+ base . OnPageHandlerExecuted ( context ) ;
1256+ }
1257+
1258+ public override void OnPageHandlerSelected ( PageHandlerSelectedContext context )
1259+ {
1260+ base . OnPageHandlerSelected ( context ) ;
1261+ }
1262+ }
1263+
12171264 private static DefaultPageApplicationModelProvider CreateProvider ( )
12181265 {
12191266 var modelMetadataProvider = TestModelMetadataProvider . CreateDefaultProvider ( ) ;
0 commit comments