3

私は今までスキン化されていたウェブアプリ(基本的な色とロゴだけで、複雑なことは何もない)を1つの会社に持っていましたが、別の会社と合併して以来、サイトは2つの別々の会社としてブランド化する必要があります(操作はまさに両方とも同じで、同じデータを共有します)。最も簡単な方法は、Web アプリをコピーしてその 2 つのインスタンスをホストすることですが、これはメンテナンスの手間がかかります。実際には、同じサイトに DNS エイリアスを設定したいだけです。

基本的にはサイトのURLを元にテーマを変えたいと思っています。例: alpha.company.com -> テーマ A beta.comany.com -> テーマ B。

これをどのように解決することをお勧めしますか?

4

3 に答える 3

5

ページ (またはベース ページ) で、PreInit ハンドラーを取得し (このイベントは Page のみであり、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
}
于 2009-02-06T01:07:40.377 に答える
0

最善の方法は、ページ クラスの 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;
    }
}
于 2010-05-17T07:59:53.570 に答える
-3

MasterPage.PreInit イベントで次を使用します。

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

または、それらに沿った何か...

これが役に立てば幸いです、フローリン。

于 2009-02-06T01:06:46.667 に答える