我正在开发一个网站,该网站将在设定的日期切换到新的样式。该网站内置语义 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]-->
有帮助吗?

解决方案

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

其他提示

你应该调查一下 ASP.NET 主题,这正是它们的用途。它们还允许您为控件设置皮肤,这意味着为它们提供一组默认属性。

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

if (!String.IsNullOrEmpty(Request.QueryString["css"]))
  Session.Add("CSS",Request.QueryString["css"]);

我会做以下事情:

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
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top