2015-06-07 3 views
0

- это любые альтернативы для компиляции .scss-файлов в действии в ASP.NET MVC-контроллере?Компиляция файлов scss в действии ASP.NET MVC

У меня/папка с двумя файлами: main.scss и external.scss. В мой контроллер я использую NSASS пакет:

public ActionResult GetCss(string scssPath) 
    {   
     string scss = @"@import """ + Server.MapPath(scssPath) + @""";"; 
     var compiler = new SassCompiler(); 
     string compiled = compiler.Compile(source: scss);    

     return Content(compiled.ToString(), "text/css"); 
    } 

мой взгляд:

<link href="@Url.Action("GetCss", "Theme", new { scssPath="~/Content/sass/main.scss" })" rel="stylesheet" type="text/css" /> 

main.scss файл:

@import "external"; 

У меня есть ошибки

Error: File to import not found or unreadable: external

I пытался написать @import «external.scss», но такую ​​же проблему.

+0

Возможно, я просто знаком с концепцией _having to_ привлечения ресурсов на стороне сервера для «компиляции» css ... так что насчет «предварительной компиляции» и не иметь (в контексте «альтернативы»)? Я получаю это, хотя, лично лично не «убежден», что я должен ... – EdSF

+0

@EdSF. Css должен иметь разные основные цвета, зависящие от пользователя входа ... Это не моя идея, и я бы хотел не использовать его, но У меня нет другой идеи для другого решения этой проблемы ... – cadi2108

+0

Основываясь на вашем комментарии к моему ответу, теперь я получаю «почему». Я предполагаю, что переменная тогда распространяется на X нет классов и т. Д.? Я бы предложил «dynamic css» через «Partial», но потом мы вернемся к выбранному вами решению - поэтому я отложу тех, кто на самом деле его использует (и удалит мой ответ). – EdSF

ответ

1

У нас такая же (или аналогичная проблема). Проблема, которую я вижу, заключается в том, что SassCompiler пытается найти файлы @import относительно текущего рабочего каталога, а не относительно файла, который содержит @import.

В зависимости от того, что вы пытаетесь сделать, может быть несколько способов.

Мое обходное решение состояло в том, чтобы создать временную копию структуры каталогов, а затем обновить все операторы @import в каждом файле, чтобы сделать их относительно рабочего каталога перед компиляцией.


UPDATE Я получил эту работу без этого хака, передавая все пути к параметру 'INCLUDEPATHs. Я пробовал это раньше, но я использовал относительные пути. Если вы используете абсолютные пути, то это работает.

Смежные вопросы