4

ここで述べたように、動的CSSソリューションに基づいています:

ASP.NET MVC の動的 CSS?

継承された PartialViewResult にはモデルのゲッターしかないことに気付きました.HttpContext.Response.ContentType = "text/css"でこの機能を実装できる別の方法はありますか?

4

1 に答える 1

9

モデルを取るように、カスタム アクションの結果を単純に適応させます。

public class CssViewResult : PartialViewResult
{
    public CssViewResult(object model)
    {
        ViewData = new ViewDataDictionary(model);
    }

    public override void ExecuteResult(ControllerContext context)
    {
        context.HttpContext.Response.ContentType = "text/css";
        base.ExecuteResult(context);
    }
}

その後:

public ActionResult Css()
{
    MyViewModel model = ...
    return new CssViewResult(model);
 }

そしてビューで:

@model MyViewModel
@{
    var color = "White";
    if (Model.Hour > 18 || Model.Hour < 8)
    {
        color = "Black";
    }
}
.foo {
    color: @color;
}
于 2012-04-18T05:59:06.200 に答える