@@ -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