Asp.net を使用すると、サーバーは動的に少ないファイルを生成できます。しかし、他の技術でも可能だと思います。
ホームコントローラー
//
// GET: /Home/
public ActionResult Index()
{
return View();
}
public ActionResult StyleMeFromCshtml()
{
Response.ContentType = "text/css";
return View(new StyleModel());
}
インデックス.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
}
インデックスを呼び出すたびに、サーバー上でランダムな色が生成されます。ただし、色の値は DB から取得することもできます。秘訣は、応答で 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");
}