Вот моя ситуация ...
public partial class CssController : Controller
{
public virtual ActionResult Merge(string[] files)
{
var builder = new StringBuilder();
foreach (var file in files)
{
var pathAllowed = Server.MapPath(Url.Content("~/Content/css"));
var normalizeFile = Server.MapPath(Url.Content(Path.Combine("~/Content/css", file)));
if (normalizeFile.StartsWith(pathAllowed) == false)
{
return HttpNotFound("Path not allowed");
}
if (System.IO.File.Exists(normalizeFile))
{
Response.AddFileDependency(normalizeFile);
builder.AppendLine(System.IO.File.ReadAllText(normalizeFile));
}
}
Response.Cache.VaryByParams["files"] = true;
Response.Cache.SetLastModifiedFromFileDependencies();
Response.Cache.SetETagFromFileDependencies();
Response.Cache.SetCacheability(HttpCacheability.Public);
var css = dotless.Core.Less.Parse(builder.ToString(), new DotlessConfiguration());
return Content(css, "text/css");
}
public string Index()
{
Response.ContentType = "text/css";
return Razor.Parse(System.IO.File.ReadAllText(Server.MapPath("~/Content/css/Global.css")));
}
}
}
Теперь метод public action был использован для получения всех css-файлов по одному запросу.Кроме того, возобновление этого и анализ файлов .less.Ну, из-за отсутствия редакторов, поддерживающих .less, мы переехали в Razor для анализа нашего css.Метод нижней строки отображает то, что мы пытаемся сделать там.Очень просто, как я могу интегрировать оба этих метода без получения ошибки.
В нашем макете мы используем этот
<link rel="stylesheet" type="text/css" href="@Url.ActionLinkWithArray("Merge", "Css", new { files = new[] { "StoreManager.less" } })" />
, чтобы получить все файлы по одному запросу.Тем не менее, я использую конфигурацию .less, когда я хочу использовать RazorEngine.
Надеюсь, это объясняет, что мне нужно делать.Кто-нибудь может помочь?