【问题标题】:less.modifyVars not working in Asp.Net MVCless.modifyVars 在 Asp.Net MVC 中不起作用
【发布时间】:2015-06-01 21:16:33
【问题描述】:

我已阅读 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 问题,据我所知,这必须有效。

谢谢。

【问题讨论】:

    标签: c# asp.net-mvc asp.net-mvc-5 less dotless


    【解决方案1】:

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

    如果您在浏览器中使用 less.js 编译样式表,您的 javascript 调用可能会起作用,但是由于您是在服务器端使用 dotless 编译它们,因此您在浏览器中得到的是编译后的 CSS它不再包含变量——它们已经在那个时候展开了。

    【讨论】:

    • 感谢您的回答。所以我必须使用Less.js 而不是dotless?说实话,我想根据用户的选择来改变 ui 主题。所以,我决定使用 Less。
    • 必须是一个强词。 Dotless 通过查询字符串参数支持动态变量,但是捆绑变得有点问题。这一切都取决于你真正需要完成什么,但也许 less.js 是你最好的选择。 :)
    • 我又做了一次调查。并发现 Web Essentials 已经支持 .less 文件。但是,我不知道如何从 javascript 中更改变量?你有这方面的练习吗?
    • 如果在发送到客户端之前对它们进行了预处理,则无法在客户端更改变量。
    • 我明白了。谢谢。我误解了这个过程。
    猜你喜欢
    • 1970-01-01
    • 2013-04-21
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 2016-07-29
    • 2011-06-13
    • 2019-07-03
    相关资源
    最近更新 更多