如何使用继承partialviewresult的类设置模型

Fiv*_*ols 3 asp.net-mvc razor

我基于这里提到的动态css解决方案:

ASP.NET MVC的动态CSS?

我注意到继承的PartialViewResult只有一个模型的getter,是否有另一种方法我可以实现这个功能,其中HttpContext.Response.ContentType ="text/css",我可以像你可以使用partialview一样发送模型?

Dar*_*rov 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);
    }
}
Run Code Online (Sandbox Code Playgroud)

然后:

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

并在视图中:

@model MyViewModel
@{
    var color = "White";
    if (Model.Hour > 18 || Model.Hour < 8)
    {
        color = "Black";
    }
}
.foo {
    color: @color;
}
Run Code Online (Sandbox Code Playgroud)