.css文件中的html样式链接?

时间:2011-07-27 16:59:13

标签: c# asp.net html css

目前,我网站上的所有网页都有一行如下:

<link rel="stylesheet" type="text/css" media="screen, projection" href="css/screenpro.css" />

screenpro.css是一个小文件,如下所示:

@import url("reset.css");
@import url("master.css");
@import url("account.css");
@import url("slideshow.css");
@import url("enriched.css");
@import url("ie.css");
@import url("popup.css");

一切正常。但是,我只是编写了一个小程序,生成一个动态css文件,用于更改页面上的背景颜色。我把它包含在我的一个页面上:

<link rel="Stylesheet" href="ColorChange.ashx" />

但是,我很懒,我的网站有很多页面 - 我不想在每个页面上添加这个新的导入。我试过这个:

@import url("../ColorChange.ashx");

和此:

@import url("ColorChange.ashx");

在screenpro.css中,但它没有用。有没有办法让我将生成动态css的.ashx页面包含到我现有的css树中,或者我是否必须从每个页面手动链接它?

编辑:ColorChange.ashx中的有趣位

public void ProcessRequest (HttpContext context) {
    context.Response.ContentType = "text/css";

    String query = context.Request.UrlReferrer.Query;        
    Match match = Regex.Match(query, "bg=(?<bg>\\w{6})"); 
    if (!match.Success) return;

    context.Response.Write("\n.proaccount div.box, .proouter #pnlHaveResults div.box { background-color:#" + match.Groups[1] + ";}\n");
}

3 个答案:

答案 0 :(得分:4)

您是否正在发送正确的标题?类似于:'Content-type:text / css' 因为浏览器需要它来将您的响应标识为CSS。

我没有使用太多的ASP,但在PHP中你可以完全按照自己想做的方式做,只需先打印标题,然后再打印规则。

答案 1 :(得分:1)

我会使用绝对路径。如果你使用正斜杠/开始所有操作,那么这意味着“从网站的根目录”。它为您提供了一个坚实的起点:

@import url("/css/ColorChange.ashx");

我不认为你也有这个线程中已经提到的内容类型问题,因为你有一行说:

context.Response.ContentType = "text/css";

使用绝对网址的唯一问题是,有时您最终会得到与您的直播网站不同的开发网址。例如,当您在visual studio中运行它时,最终可能会得到http://localhost/mysuperapplication/之类的网址。有一种简单的方法来解决这个问题:

答案 2 :(得分:1)

浏览器是否在没有新导入行的情况下缓存旧的CSS文件?尝试清除缓存。