Hallo,
also ...
bei gleichem Design und gleichem (fixer statischer) Inhalt:
Eine Klassenbibliothek mit UserControls, die kannst du da grafisch à la WYSIWIG entwerfen, mit Platzierung und so weiter. Die Klassenbibliothek dann im Webanwendungs-Projekt referenzieren. Und in der Page_Load Methode in der CodeBehind Datei der ASP.Net Seite dann die Klasse des Controls instanzieren und der (this.)Controls Collection der ASP.Net Seite mit Add hinzufügen.
bei gleichem Design aber dynamischen Inhalt (z.b. eine Seite soll eine Tabelle mit Überschrift anzeigen, aber was genau da steht ist abhängig von der Seite und/oder Parametern), dann empfiehlt sich das MVC Pattern. (Model-View-Controller).
Dieses Konzept wird für dich bei deinem jetzigen Kenntnisstand zwar (vielleicht sogar über-) fordernd sein, aber es lohnt sich und bringt dich extrem voran.
Model - die Daten/Information, die anzuzeigen sind, kann z.b. eine Klasse sein, welche Daten aus der Datenbank abruft und über eine Public Property als DataSet ausgibt.
View - ein Design Template, z.b. ein UserControl mit einem Label und einem Grid drauf
Controller - die Instanz, welche die Daten aus dem Model in die View schreibt
Die View ist für die Interaktion zwischen Benutzer und Controller gedacht, dort drin behandelst du Button Clicks, aber nur soweit, dass du sie in etwas umwandelst, was der Controller versteht (siehe z.b. Command Pattern), damit muss keines der 3 Teile den genauen Aufbau des anderen kennen, welche Methoden oder Properties genau vorhanden sind.
Bei der Programmierung der Controller, Model und View Klassen, dort kannst du dann Konzepte wie Abstrakte Basisklassen, Interfaces, Dependency Injection und so weiter anwenden.
Und ja im Grunde kann man die Klasse "Page" aus dem .Net Framework als Controller betrachten (allerdings as PageController). Hier noch ein Link dazu:
Ciao, Frank