在我的CSS文件中,我希望有以下定义:
.hr {
background:url('<%=CommonFunctions.AllocateStaticPath("/images/hr.png") %>');
width: 100%;
height: 2px;
margin: 40px 0;
}
这对我很有用,因为生产服务器和开发服务器上每个映像的路径不同,并且函数正确设置了资源路径。能够这样做可以简化我的发布过程。
如何启用IIS7在CSS文件上运行ASP.net?我已经尝试将CSS文件重命名为.ashx
并创建重写规则,但这似乎总是404.
答案 0 :(得分:2)
这个问题激发了我做一些测试,看看我是否能够以某种方式让语法工作。
事实证明相对容易。在几个不同的测试版本之后,这就是我最终做的。
DynCss
的文件夹,其中将放置需要动态处理的css文件注册{Page 1}}文件,由Page处理程序处理此文件夹的请求。为此,我将以下内容添加到.css
:
web.config
为<configuration>
<system.web>
...
<httpHandlers>
<add type="System.Web.UI.PageHandlerFactory" path="/DynCss/*.css" verb="GET"/>
</httpHandlers>
...
</system.web>
</configuration>
个文件注册构建处理程序:
.css
完成这些更改后,我可以继续进行测试。
出于测试目的,我将<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