less.modifyVars 在 Asp.Net MVC 中不工作

less.modifyVars not working in Asp.Net MVC

我已阅读 this 在 Asp.Net MVC5 中使用 Less 的教程。

为了在 ASP.NET MVC 中集成 LESS,我下载并安装了 dotless NuGet 包。

然后添加了这个包:

var lessBundle = new Bundle("~/Less").Include("~/Content/Less/*.less");
lessBundle.Transforms.Add(new LessTransform());
lessBundle.Transforms.Add(new CssMinify());
bundles.Add(lessBundle);

这里是 LessTransform:

public class LessTransform : IBundleTransform
{
  public void Process(BundleContext context, BundleResponse response)
  {
    response.Content = dotless.Core.Less.Parse(response.Content);
    response.ContentType = "text/css";
  }
}

到目前为止一切顺利。一切都按预期进行。

这是我的 .less 文件中的部分:

@CustomMessageBackgroundColor: #65B6A7;

div.custom-dialog {
    ...
    background: @CustomMessageBackgroundColor;
}

现在,我想从 .js 文件中动态更改此变量的值:

less.modifyVars({ '@CustomMessageBackgroundColor': 'blue' });
less.refreshStyles();

但是,这是行不通的。 我已经阅读了所有 SO 问题,据我所知这一定有效。

谢谢。

您混淆了两种不同的 LESS 编译器实现。

如果您使用 less.js in the browser to compile your stylesheets, but since you're compiling them on the server side with dotless,您的 javascript 调用可能会起作用,您进入浏览器的是已编译的 CSS,它不再包含变量——它们已经那时扩大了。