If you want to see how you can use Page Modules and its benefits, read this.
From my article on Page Modules some people might have gotten the wrong impression that this would be the only way to get a reference to the page given its path, but it isn't.
You can use the System.Web.UI.PageParser.GetCompiledPageInstance method to get the reference to the page before calling the System.Web.HttpServerUtility.Transfer method.
There's one caveat, though. Unlike the version of the System.Web.HttpServerUtility.Transfer method where you that takes a virtual path as an argument, this one will not change the values of the System.Web.HttpRequest.AppRelativeCurrentExecutionFilePath and System.Web.HttpRequest.CurrentExecutionFilePath properties won't change from the original request.
That can either be a problem or the solution to a problem.
From the need to handle events in every rendered page and not wanting to pay the penalties (network usage and server load) of frequent client redirects, I came up with the concept of Page Modules.
Read all about it.