Я думаю, что лучший подход здесь для ASP.NET - написать пользовательский элемент управления (файл * .ascx), который представляет содержимое страницы, и загрузить различные элементы управления в зависимости от текущей ситуации с использованием метода Page.LoadControl (). Это решение достаточно гибкое, потому что его именем является только ссылка на элемент управления. И этот подход гораздо более полезен, чем перегрузка конструктора страницы, поскольку вы не связаны со строгими типами, а только с именами элементов управления.