我想导入一个DB生成的变量少的文件,以供其他较少的文件使用。这将为我的应用程序提供一些高级别的变量。导入这些文件的最佳方法是什么?我已经尝试过类似@import "http://server.com/foo.less"
而没有成功。如何生成动态LESS样式表?
文件看起来像:
@fontColor: #EEE;
@fontSize: 10px;
从
@fontColor: {{fontColor}}
@fontSize: {{fontSize}}
我想导入一个DB生成的变量少的文件,以供其他较少的文件使用。这将为我的应用程序提供一些高级别的变量。导入这些文件的最佳方法是什么?我已经尝试过类似@import "http://server.com/foo.less"
而没有成功。如何生成动态LESS样式表?
文件看起来像:
@fontColor: #EEE;
@fontSize: 10px;
从
@fontColor: {{fontColor}}
@fontSize: {{fontSize}}
你需要这样做使用url()“函数”
@import url("http://localhost/foo.less");
这将根据您的要求有多快被回答在编译时,这将会减慢的过程中导入较少的文件。 之后,此文件中的所有变量将可用于您当前的范围。 很可能,这也适用于mixins,但我没有测试。
生成假设你有机会获得server.com
获取文件(我认为你这样做),你的道路是正确的(并且我假设它是这样),在我看来,需要纠正的一个错误是该文件应该看起来像(注意添加冒号):
@fontColor: #EEE;
@fontSize: 10px;
我不知道这是否意味着你需要改变你的生成代码:
@fontColor: {{fontColor}}
@fontSize: {{fontSize}}
我不是用双括号意味着什么{{...}}
熟悉不够,但我认为是数据库是如何从中提取信息放入正在生成的.less
文件中。如果是这样,那么在那里添加冒号应该可以解决LESS期望变量被定义的问题,并且可能解决您的问题。
使用Asp.net,您的服务器可以动态生成较少的文件。但我认为它也可以用其他技术。
的HomeController
//
// GET: /Home/
public ActionResult Index()
{
return View();
}
public ActionResult StyleMeFromCshtml()
{
Response.ContentType = "text/css";
return View(new StyleModel());
}
Index.cshtml
<!DOCTYPE html>
<html>
<head>
<title>test less</title>
<link rel="stylesheet/less" type="text/css" href="/Home/StyleMeFromCshtml" />
<script src="~/Scripts/less-1.4.2.js"></script>
</head>
<body>
<div class="styleMeLess">
I'm styled
</div>
</body>
</html>
StyleModel.cs
public class StyleModel
{
public string BackgroundColor
{
get
{
// or get the value from the DB
var random = new Random();
var toArgb = Color.FromArgb(random.Next(256), random.Next(256), random.Next(256));
return toArgb.Name.Remove(6, 2);
}
}
}
的StyleMeFromCshtml.cshtml较少在CSHTML伪装
@model lessTest.Models.StyleModel
@{
Layout = null;
}
.styleMeLess{
background-color: #@Model.BackgroundColor
}
随着索引的每次调用,都会在服务器上生成随机颜色。但颜色值也可能来自数据库。诀窍是在响应中contentType被设置为“text/css”。
或者你直接返回较少的字符串:
public ActionResult StyleMe()
{
var random = new Random();
var toArgb = Color.FromArgb(random.Next(256), random.Next(256), random.Next(256));
string style = String.Format(".styleMeLess{{ background-color: #{0} }}", toArgb.Name.Remove(6,2));
return Content(style, "text/css");
}
这不是我要找的。我并没有与产生更少的文件的问题,我希望能够导入服务器生成在我的设置较少的文件。 – Art 2013-02-28 03:28:33
@arturnt:也许你需要澄清你的问题。我重读它,我想你问的是你如何可以是_not_该服务器上的其他文件少导入服务器生成的少文件?那是对的吗?如果是这样,我怀疑这是不可能的(尽管我还没有证实)。 – ScottS 2013-02-28 13:26:18
这正是我问的:)。它可以位于同一台服务器上,但不能在本地文件系统上运行。 – Art 2013-03-01 20:50:31