我希望能够在网关页面中设置 ASP.NET 主题,它将根据合作伙伴 ID 或类似的东西确定主题。我想我只是将主题名称粘贴在会话中,如果需要,可以从那里获取它。
我很难找到将这段代码放在一个地方的正确位置。
我似乎看不到您可以设置主题的全局位置。您必须为每个页面设置它。
如MSDN中所述,您可以在页面的 PreInit 函数中分配 Theme 属性。
Protected void Page_PreInit(object sender, EventArgs e)
{
switch (Request.QueryString["theme"])
{
case "Blue":
Page.Theme = "BlueTheme";
break;
case "Pink":
Page.Theme = "PinkTheme";
break;
}
}
所以我想好吧 - 我会在我的母版页中做到这一点。不幸的是,将完全相同的代码复制到母版页中是行不通的。所以我想 - 嗯,也许母版页不使用这个事件。事实证明这是真的。
我真的不想把这个主题代码放在每个内容页面上。这似乎完全愚蠢。但我还找不到其他方法。MSDN仅描述了将主题应用于页面的两种方法——在 web.config 中或使用 Page.Theme。
我是否必须创建 Page 的子类并让我的所有页面子类化该页面,并覆盖该子类中的 PreInit?我想我一定错过了一些东西,因为我无法想象 MS 真的希望人们在每个内容页面上以编程方式设置主题。