Вы уже приняли это как свой собственный ответ, но я хотел бы предложить вам, как я справлялся с подобной проблемой ранее при преобразовании двух «идентичных» веб-сайтов в единый проект для обработки обоих. У меня было два отдельных веб-домена, на которых размещались практически идентичные приложения, отформатированные под разные бренды для разных компаний. Мне нужно было одно решение с общим кодом, которое могло бы обслуживать, функционировать и регистрировать независимо в зависимости от обслуживаемого домена.
Во-первых, мы создали базовые элементы управления (базовая страница, базовый пользовательский элемент управления), в которых размещались все данные бизнес-объекта, которые нам регулярно требовались (сеанс, представление состояния, базовые свойства, все, что, как мы знали, нам понадобилось бы универсально). На базовой странице в нашей библиотеке классов мы создали свойство, определяющее, какой сайт обслуживается (масштабируется, поскольку это перечисление).
В фактической структуре мы создали папку для каждой компании, которой требовался собственный бренд, и внутри нее мы создали реальные aspx-страницы, которые назначали мастер-страницы, определяющие стиль и брендинг. В мастер-страницы мы включили наши пользовательские элементы управления. Все наши элементы управления приложения были созданы со стилизованными пользовательскими элементами управления. Таким образом, функциональность реального приложения сохраняется в одном и том же месте, но его можно использовать для нескольких брендов. Кроме того, в зависимости от бренда были незначительные отличия в приложениях. Эти исключения были закодированы в пользовательские элементы управления, чтобы их можно было легко идентифицировать для будущего обслуживания, а в некоторых случаях пользовательский элемент управления использовался исключительно в одной марке для определенной цели.
Эта сегментация позволила нам сделать карту сайта немного чище, обеспечить несколько интерфейсов для одного и того же приложения без необходимости переписывать приложение, а с помощью базовых элементов управления / страниц мы смогли упростить разработку для любого новичка в команда. Как только они ознакомятся с базовыми классами и макетом архитектуры, они смогут найти на сайте все, что им назначено.