Динамический CSS для ASP.NET MVC?
Похоже, что сообщество .NET вообще не выбрало компиляторы CSS. При поиске в Google я не нашел ничего даже отдаленно релевантного.
Кто-нибудь, кто использует ASP.NET MVC, выяснил схему более разумного генерации своего CSS? Мне бы хотелось, чтобы я мог запускать свой CSS через Razor, например, или для SASS, чтобы портировать или что у вас есть. Может быть, у меня есть новый боковой проект на руках:)
Ответы
Ответ 1
Мне бы очень хотелось, чтобы мой CSS через Razor
Что вас останавливает?
public class CssViewResult : PartialViewResult
{
public override void ExecuteResult(ControllerContext context)
{
context.HttpContext.Response.ContentType = "text/css";
base.ExecuteResult(context);
}
}
public class HomeController : Controller
{
public ActionResult Index()
{
return new CssViewResult();
}
}
и ~/Views/Home/Index.cshtml
:
@{
var color = "White";
if (DateTime.Now.Hour > 18 || DateTime.Now.Hour < 8)
{
color = "Black";
}
}
.foo {
color: @color;
}
Теперь все, что осталось, это включить его:
<link href="@Url.Action("index")" rel="stylesheet" type="text/css" />
Вы также можете сделать шаблон строго типизированным для модели представления, писать петли, ifs, включения,...
Ответ 2
Небольшая модификация ответа @даррина-димитрова. Это добавляет возможность передать модель в CssView:
public class CssViewResult : PartialViewResult
{
public CssViewResult()
{
}
public CssViewResult(object model)
{
if (model != null)
{
ViewData.Model = model;
}
}
public override void ExecuteResult(ControllerContext context)
{
context.HttpContext.Response.ContentType = "text/css";
base.ExecuteResult(context);
}
}
а затем вы просто потребляете его с помощью:
return new CssViewResult(model);
Ответ 3
Фил Хаак сделал сообщение в блоге о LessCSS и .net:
http://haacked.com/archive/2009/12/02/t4-template-for-less-css.aspx
Ответ 4
Я использую ASP.NET MVC 4, добавление ContentType="text/css"
в директиву страницы для меня.