ASP.NET установить тему на основе URL - PullRequest
3 голосов
/ 06 февраля 2009

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

В основном я хочу изменить тему в зависимости от URL сайта. например alpha.company.com -> Тема А beta.comany.com -> Тема Б.

Как бы вы порекомендовали решить эту проблему?

Ответы [ 3 ]

5 голосов
/ 06 февраля 2009

На вашей странице (или базовой странице) перейдите к обработчику PreInit (это событие имеет только страница, а не MasterPage) и выполните что-то вроде следующего:

protected void Page_PreInit(..)
{
    this.Theme = GetThemeByUrl(Request.Url);
}

private string GetThemeByUrl(Uri url)
{
    string host = url.Host; //gets 'subdomain.company.com'
    //determine & return theme name from host
}
0 голосов
/ 17 мая 2010

Лучшим способом было бы переопределить свойство Theme в классе страницы:

Отметьте Темы ASP.NET и языки справа налево

public override string Theme
{
    get
    {
        if (!string.IsNullOrEmpty(base.Theme))
        {
            return (CultureInfo.CurrentUICulture.TextInfo.IsRightToLeft ? string.Format("{0}.rtl", base.Theme) : base.Theme);
        }
        return base.Theme;
    }
    set
    {
        base.Theme = value;
    }
}
0 голосов
/ 06 февраля 2009

В событии MasterPage.PreInit используйте:

Page.Theme = (Request.RawUrl.Contains("...") ? "yellow": "blue");

Или что-то в этом роде ...

Надеюсь, это поможет, Флорин.

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