Мультипрезентационное корпоративное решение

Я работаю над разработкой корпоративного веб-приложения, которое будет иметь единую кодовую базу и единую базу данных (не требуется никакой гибкости в базе данных на основе арендаторов), но разные представления на основе клиентов. У нас может быть от 3 до 4 разных клиентов (веб-сайтов), использующих одну и ту же основную логику и структуру, но специфичные для клиента заголовки, нижние колонтитулы, изображения, css и т. д. Мне нужно решение с несколькими презентациями, а затем полноценная мультиарендность. Большинство примеров, которые я видел в Интернете, ориентированы на полноценную мультиарендность. Я не думаю, что мне нужны такие сложные вещи. Я нашел здесь некоторую информацию, которая очень полезна в моем случае:

http://jasonjano.wordpress.com/2010/02/22/multi-presentation-websites-for-c/

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

<configuration>
    <appSettings>
        <add key="MySite1.MyDomain.com" value="1"/>
        <add key="www.MySite1.MyDomain.com" value="1"/>
        <add key="MySite2.MyDomain.com" value="2"/>
        <add key="localhost" value="1"/>
    </appSettings>
</configuration>

После этого, как мне динамически выбирать главную страницу, изображения и файлы css на основе идентификатора? Также я буду заполнять класс «CustomAppSettings» (как предложено в статье) из базы данных. Целесообразно ли сделать его статическим, чтобы к нему можно было получить доступ на разных уровнях? иначе какой рекомендуемый способ?

Ваши предложения будут очень признательны.


person Alex    schedule 06.10.2010    source источник


Ответы (2)


Это может помочь вам определить «арендатора» во входящем запросе.

Я бы не стал динамически выбирать другой файл MasterPage, но скорее отображал другой контент выводится на мастер-страницу с помощью вспомогательных функций Html / Patrial Views (или обоих).

person Matt Kocaj    schedule 07.10.2010

Рад видеть, что вы получаете какую-то пользу от этой статьи. Что касается ответа, я обычно использую собственный класс страницы, который наследуется от system.web.ui.page. В page_init пользовательского класса страницы вы можете установить главную страницу и т. д.

Что-то вроде (псевдокод)

class MyCustomPage : System.Web.UI.Page
{
public void Page_Init(object sender, eventargs e) {
this.MasterPageFile = CurrentSettings.MasterPageFile <Or however you are getting your masterpage file>
}

Затем на своих страницах наследуйте от класса MyCustomPage вместо System.Web.UI.Page.

Удачи

person Jason Janofsky    schedule 07.10.2010
comment
Разве этот ответ не относится к веб-формам ASP.NET? Не МВК? (возможно я путаю) - person Matt Kocaj; 07.10.2010