是否有任何视图助手来生成CSS?

NOt*_*Dev 4 css asp.net-mvc helpers

我喜欢HTML助手的想法,它允许我不为常见元素编写所有HTML,同时仍然让我完全控制,保留模型 - 视图分离并且可以强类型化.

我想知道是否有可能以相同的方式生成CSS样式表或样式定义 - 在视图标记中使用帮助程序?理想情况下,我希望根据一些面向对象的规则和定义生成一些CSS.

我找不到任何能提供样式表压缩和合并的解决方案.

Dar*_*rov 5

简单的方法是使用自定义视图结果:

public class CssViewResult : PartialViewResult
{
    private readonly object _model;
    public CssViewResult(object model)
    {
        _model = model;
    }

    public override void ExecuteResult(ControllerContext context)
    {
        this.ViewData.Model = _model;
        base.ExecuteResult(context);
        context.HttpContext.Response.ContentType = "text/css";
    }
}
Run Code Online (Sandbox Code Playgroud)

然后是一个简单的控制器动作:

public ActionResult MyCss()
{
    SomeModel model = ...
    return new CssViewResult(model);
}
Run Code Online (Sandbox Code Playgroud)

并在相应的MyCss.cshtml视图中:

@model AppName.Models.SomeModel
.foo {
    background-color: @Model.SomeColor;
}
Run Code Online (Sandbox Code Playgroud)

然后:

<link href="@Url.Action("MyCss", "SomeController")" rel="stylesheet" type="text/css" />
Run Code Online (Sandbox Code Playgroud)