36

我正在开发一个网站,该网站将在设定的日期切换到新样式。该站点的内置语义 HTML 和 CSS,因此更改应该只需要更改 CSS 参考。我正在与需要能够查看外观的设计师以及需要能够查看当前外观的内容更新以及新外观的设计进度的客户合作。

我打算在页脚中使用一个神奇的查询字符串值和/或一个 javascript 链接,它会写出一个 cookie 来选择新的 CSS 页面。我们正在使用 ASP.NET 3.5。有什么建议吗?

我应该提到我们正在使用 IE 条件注释来支持 IE8、7 和 6。我可以创建一个进行替换的函数:

<link href="Style/<% GetCssRoot() %>.css" rel="stylesheet" type="text/css" />
<!--[if lte IE 8]>
    <link type="text/css" href="Style/<% GetCssRoot() %>-ie8.css" rel="stylesheet" />
<![endif]-->
<!--[if lte IE 7]>
    <link type="text/css" href="Style/<% GetCssRoot() %>-ie7.css" rel="stylesheet" />
<![endif]-->
<!--[if lte IE 6]>
    <link type="text/css" href="Style/<% GetCssRoot() %>-ie6.css" rel="stylesheet" />
<![endif]-->
4

4 回答 4

22

在 Asp.net 3.5 中,您应该能够将标头中的 Link 标记设置为服务器标记。然后在代码隐藏中,您可以根据 cookie 值、查询字符串、日期等设置链接元素的 href 属性。

在您的 aspx 文件中:

<head>
  <link id="linkStyles" rel="stylesheet" type="text/css" runat="server" />
</head>

在后面的代码中:

protected void Page_Load(object sender, EventArgs e) {
  string stylesheetAddress = // logic to determine stylesheet
  linkStyles.Href = stylesheetAddress;
}
于 2008-08-07T19:00:58.757 回答
6

您应该研究ASP.NET主题,这正是它们的用途。它们还允许您对控件进行皮肤控制,这意味着为它们提供一组默认属性。

于 2008-08-07T19:01:05.060 回答
2

我建议将样式表选择存储在会话中,这样您就不必依赖一直存在的查询字符串键。您可以检查 Page_Load 中的会话并添加适当的样式表引用。听起来这是一种临时/开发情况,所以选择简单有效的方法。

if (!String.IsNullOrEmpty(Request.QueryString["css"]))
  Session.Add("CSS",Request.QueryString["css"]);
于 2008-08-07T18:56:47.707 回答
-2

我会做以下事情:

www.website.com/?stylesheet=new.css

然后在您的 ASP.NET 代码中:

if (Request.Querystring["stylesheet"] != null) {
    Response.Cookies["stylesheet"].Value = Request.QueryString["stylesheet"];
    Response.Redirect(<Current Page>);
}

然后在哪里定义样式表:

if (Request.Cookies["stylesheet"] != null) {
    // New Stylesheet
} else {
    // Default
}
于 2008-08-07T19:02:00.800 回答