1

DB で生成された変数の少ないファイルをインポートして、他の少ないファイルで使用したいと考えています。これにより、アプリにいくつかの高レベルの変数が提供されます。これらをインポートする最良の方法は何ですか? 私は@import "http://server.com/foo.less"成功せずに何かを試しました。

ファイルは次のようになります。

@fontColor: #EEE;
@fontSize: 10px; 

から生成

@fontColor: {{fontColor}}
@fontSize: {{fontSize}}
4

3 に答える 3

2

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");
         }
于 2013-10-04T15:08:40.267 に答える
1

url()「関数」を使用してこれを行う必要があります

@import url("http://localhost/foo.less");

これにより、コンパイル時にless ファイルがインポートされ、リクエストへの応答速度に応じてプロセスが遅くなります。その後、このファイル内のすべての変数が現在のスコープで使用できるようになります。これはミックスインにも当てはまる可能性が非常に高いですが、私はそれをテストしていません。

于 2013-05-13T10:12:54.820 に答える
0

ファイルを取得するためのアクセス権があり (アクセスしているserver.comと思います)、パスが正しい (正しいと思います) と仮定すると、修正が必要なエラーの 1 つは、ファイルが (コロンの追加に注意してください):

@fontColor: #EEE;
@fontSize: 10px; 

生成コードを次のように変更する必要があることを意味するかどうかはわかりません。

@fontColor: {{fontColor}}
@fontSize: {{fontSize}}

二重括弧の意味についてはよくわかりませんが、データベースがそこから情報を引き出して、生成中のファイル{{...}}に入れる方法だと思います。.lessその場合、そこにコロンを追加すると、LESS が変数をどのように定義することを期待しているかが解決され、問題が解決する可能性があります。

于 2013-02-27T15:28:35.863 に答える