Подтвердить что ты не робот

Динамический CSS для ASP.NET MVC?

Похоже, что сообщество .NET вообще не выбрало компиляторы CSS. При поиске в Google я не нашел ничего даже отдаленно релевантного.

Кто-нибудь, кто использует ASP.NET MVC, выяснил схему более разумного генерации своего CSS? Мне бы хотелось, чтобы я мог запускать свой CSS через Razor, например, или для SASS, чтобы портировать или что у вас есть. Может быть, у меня есть новый боковой проект на руках:)

4b9b3361

Ответ 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);

Ответ 4

Я использую ASP.NET MVC 4, добавление ContentType="text/css" в директиву страницы для меня.