ASP.NET基于URL设置主题

时间:2009-02-06 01:02:07

标签: .net asp.net themes

我有一个网络应用程序,到目前为止已被剥离(只是基本颜色和徽标,没有什么复杂)给一家公司,但是现在自从与另一家公司合并后,该网站需要被标记为两个独立的公司(运营)两者完全相同,它们共享相同的数据)。最简单的方法是复制Web应用程序并托管它的两个实例,但这将是一个维护麻烦,我真的只想为同一站点设置DNS别名。

基本上我想根据网站的网址更改主题。例如 alpha.company.com - >主题A. beta.comany.com - >主题B.

你会如何建议解决这个问题?

3 个答案:

答案 0 :(得分: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
}

答案 1 :(得分:0)

最好的方法是覆盖页面类中的Theme属性:

选中此ASP.NET Themes and Right-to-Left Languages

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;
    }
}

答案 2 :(得分:-3)

在MasterPage.PreInit事件中使用:

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

或者那些东西......

希望这有帮助, 林。