无网格中url()中的app相对路径

时间:2013-11-26 20:49:59

标签: asp.net css dotless

我有一堆包含图像背景的无文件:

.header {
    background-image:url(~/images/some_image.png);
}

在调试模式下,这些.less文件直接提供,但在发布模式下,它们作为捆绑包的一部分提供。捆绑包URL和单个文件URL之间的路径深度并不总是相同,因此我不能只使用相对URL。

无点nuget包的默认选项不解析app相对路径。有没有选择让它做正确的事情?

1 个答案:

答案 0 :(得分:1)

编辑:此方法存在潜在的致命缺陷。 apppath.less文件必须位于某个不一定已知的位置,这会产生鸡蛋情景。不过,它在某种程度上可能会有所帮助。

一种方法是使用@import规则来声明包含应用程序路径的变量,如下所示:

@import "apppath.less"

如果你不能使用.less扩展名,你应该可以使用(less)强制执行.less解释。

@import (less) "apppath.ashx"

apppath.less可以简单地使用Response.Write来回显应用程序路径,而不是静态文件,产生如下输出:

@app-path: "http://yourserver/app/path";

然后你会像这样使用它:

.header {
    background-image:url("@{app-path}/images/some_image.png");
}