如何使用无点asp.net检索更少的变量

时间:2013-12-06 13:06:00

标签: c# asp.net less

我在我的asp.net网站上使用无点库来编译.less文件。我希望通过名称获得一些变量的值。

例如,我有这样的代码:

@FONT_SIZE: 10px;
@TEXT_COLOR: red;

那么,如何通过“FONT_SIZE”名称获取字体大小? 我在Env类中找到了FindVariable方法,但我不明白如何使用它。

3 个答案:

答案 0 :(得分:1)

我已使用此代码解决了我的问题:

string GetLessVariableByName(string name, string lessContent) {
    int optimisation = 1;
    Func<IStylizer> defaultStylizer = () => new PlainStylizer();
    Func<IImporter> defaultImporter = () => new Importer();
    Func<Parser> defaultParser = () => new Parser(optimisation, defaultStylizer(), defaultImporter());
    Func<Env> defaultEnv = () => { return new Env(); };
    Env env = defaultEnv();
    Parser parser = defaultParser();
    var tree = parser.Parse(lessContent.Trim(), "tmp.less");
    var rule = tree.Rules.ToArray()[0];
    Node node = rule.Evaluate(env);
    var variableValue = tree.Variable(name, node);

    return variableValue == null ? null : variableValue.Value.ToString();
}

答案 1 :(得分:0)

我想知道你的环境是否是静态的(需要读取你的价值)。我认为您应该将较少的文件作为文本阅读,并使用正则表达式来获取您的价值。 请参阅:Import LESS from server如何阅读较少的文件。 这里将讨论同样的问题:https://groups.google.com/forum/#!topic/dotless/V3SROjkTpM8

答案 2 :(得分:0)

是的,我会用:

int optimisation = 1; Func<IStylizer> defaultStylizer = () => new PlainStylizer(); Func<IImporter> defaultImporter = () => new Importer(); Func<Parser> defaultParser = () => new Parser(optimisation, defaultStylizer(), defaultImporter()); Func<Env> defaultEnv = () => { return new Env(); }; Env env = defaultEnv(); Parser parser = defaultParser(); var tree = parser.Parse(lessContent.Trim(), "tmp.less"); var rule = tree.Rules.ToArray()[0]; Node node = rule.Evaluate(env);

问题,来自var rule = tree.Rules.ToArray()[0]的ToArray()来自哪里?线?

谢谢, 杰森