在ASP.net中的CSS文件中运行代码

时间:2012-08-23 10:59:39

标签: asp.net css iis iis-7 server-side

在我的CSS文件中,我希望有以下定义:

.hr {
    background:url('<%=CommonFunctions.AllocateStaticPath("/images/hr.png") %>');
    width: 100%;
    height: 2px;
    margin: 40px 0;
}

这对我很有用,因为生产服务器和开发服务器上每个映像的路径不同,并且函数正确设置了资源路径。能够这样做可以简化我的发布过程。

如何启用IIS7在CSS文件上运行ASP.net?我已经尝试将CS​​S文件重命名为.ashx并创建重写规则,但这似乎总是404.

4 个答案:

答案 0 :(得分:2)

这个问题激发了我做一些测试,看看我是否能够以某种方式让语法工作。

事实证明相对容易。在几个不同的测试版本之后,这就是我最终做的。

配置

  1. 创建一个全新的Web应用程序以进行测试
  2. 创建一个名为DynCss的文件夹,其中将放置需要动态处理的css文件
  3. 注册{Page 1}}文件,由Page处理程序处理此文件夹的请求。为此,我将以下内容添加到.css

    web.config
  4. <configuration> <system.web> ... <httpHandlers> <add type="System.Web.UI.PageHandlerFactory" path="/DynCss/*.css" verb="GET"/> </httpHandlers> ... </system.web> </configuration> 个文件注册构建处理程序:

    .css
  5. 完成这些更改后,我可以继续进行测试。

    测试

    出于测试目的,我将<configuration> <system.web> ... <compilation debug="true" targetFramework="4.0"> <buildProviders> <add extension=".css" type="System.Web.Compilation.PageBuildProvider" /> </buildProviders> </compilation> ... </system.web> </configuration> 添加到DynamicStyles.css文件夹。 DynCss的内容:

    DynamicStyles.css

    注意<%@ Page Title="DynamicStyles.css" Language="C#" AutoEventWireup="true" %> <script runat="server"> protected void Page_Load(object sender, EventArgs e) { Response.ContentType="text/css"; Response.Cache.SetCacheability(HttpCacheability.Public); } </script> body { font-weight: <%= TestDynamicCss.Code.Constants.FontWeight %>; } 引用静态类的静态属性。我只返回字符串&#34;粗体&#34;。

    最后,我在TestDynamicCss.Code.Constants.FontWeight

    中链接到它
    Default.aspx

    评论

    使用此方法可以获得您要求的行为。缺点是您没有像静态css文件那样获得任何自动缓存处理。此外,这种方法(据我所知)使得无法使用Asp.Net 4.5的Css捆绑功能。另外(不用说)当你在Css文件中编码时,你不会得到C#intellisense。

答案 1 :(得分:0)

试试这个:

background:url('<%= CommonFunctions.AllocateStaticPath("/images/hr.png") %>');

答案 2 :(得分:0)

您是否只能创建一个返回CSS而不是HTML的ASPX页面?然后在CSS声明中引用.aspx文件。

答案 3 :(得分:0)

我认为你可以使用 ashx处理程序一个页面并添加响应头:

Content-Type: text/css