在ASP.NET MVC操作

时间:2015-06-07 12:28:29

标签: asp.net-mvc sass actionresult

是ASP.NET MVC控制器中运行的编译.scss文件的替代方法吗?

我有/ Content文件夹有两个文件: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";

我有错误

  

错误:要导入的文件未找到或不可读:外部

我试着编写@import“external.scss”但同样的问题。

1 个答案:

答案 0 :(得分:1)

我们有相同(或类似的问题)。我看到的问题是SassCompiler试图找到相对于当前工作目录的@import文件,而不是相对于包含@import的文件。

根据您的尝试,可能会有一些方法。

我的解决方法包括制作目录结构的临时副本,然后更新每个文件中的所有@import语句,使它们在编译之前相对于工作目录。

<强>更新 我通过将所有路径传递到&#39; includePaths&#39;参数。我之前尝试过这个没有成功,因为我使用的是相对路径。如果你使用绝对路径,它就可以工作。