3

我有一个网络应用程序,到目前为止,它已经被皮肤(只是基本的颜色和徽标,没什么复杂的)给一个公司,但是现在自从与另一家公司合并后,该网站需要被标记为两个独立的公司(操作正是两者都相同,并且它们共享相同的数据)。最简单的方法是复制 Web 应用程序并托管它的两个实例,但这将是一个维护麻烦,我真的只想为同一个站点设置一个 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 回答