Как создать хорошо структурированную многосайтовую кодовую базу ASP.NET MVC? - PullRequest
1 голос
/ 09 октября 2009

Я работаю над проектом, который имеет конечное смутно определенное требование: «Сайт должен быть скиновым для других клиентов».

Как мы все знаем, почти всегда нужно вносить изменения в пользовательский интерфейс, логику и модель.

Я объяснил, что потребуется работа для добавления другого клиента на сайт, и что это будет не так просто, как создание нового скина. Я также объяснил, что невозможно проектировать для неизвестного и неопределенного.

При этом я хотел бы придумать дизайн, который пригоден для повторного использования без излишней сложности.

Я бы хотел иметь возможность использовать как можно больше контроллеров и представлений.

Я думал о попытке загрузить другой набор маршрутов (указывающих на разные контроллеры) на основе URL-адреса, который пользователь использует для входа на сайт (это вообще возможно?). Я думал, что могу определить набор базовых контроллеров и наследовать их для каждого подузла.

Есть ли лучший способ сделать то, что я пытаюсь сделать?

Может ли это быть сделано с контейнером IoC? Есть ли преимущества у такого подхода?

Как другие обрабатывают ситуации, когда одна кодовая база MVC должна совместно использоваться и в основном повторно использоваться между различными сайтами?

Спасибо за любой совет или вклад!

1 Ответ

3 голосов
/ 09 октября 2009

Самым простым началом будет загрузка разных css-файлов на главной странице на основе либо переменных запроса, либо значений Web.config, если сайты будут находиться на разных серверах. Другой способ сделать это - создать свой собственный CSSResult, который наследуется от ActionResult, который возвращает файл CSS на основе запрашивающего домена. Если вы хотите больше контролировать то, какое представление отображается, вы можете создать класс, который наследуется от интерфейса IViewEngine и отображать разные представления в зависимости от запрашивающего домена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...