2016-05-05 10 views
0

ダイナミックCSSを読み、スタックオーバーフローでそれを行う方法を見つけ、必要なものに適応させました。ViewModelをCSSファイルに渡す

データは、モデル問題なしにロードされるものの、すぐにデバッガがビューに当たるように私はエラーを取得:

Object is not a reference of an object

ベースコントローラ:

public ActionResult CssDynamic() 
{ 
    Layout page = new Layout(); 
    var dummyCorpId = 80; 

    page.Css = GetCss(dummyCorpId); 

    var model = page; 
    return new CssViewResult(model); 
} 

部分図に戻る

public class CssViewResult : PartialViewResult 
{ 
    private readonly object model; 

    public CssViewResult(object model) 
    { 
     this.model = model; 
    } 

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

ビュー:

@model SpecCheck.Portals.Web.UI.ViewModels.Layout 

//BRAND COLOURS/////////////////////////////////////////////////////////// 
//One--------------------------------------------------------------------- 
@@brand1: #@Model.Css.CssBrandColor1; 
@@brand1dark: darken(@@brand1, 25%); 
@@brand1darker: darken(@@brand1, 50%); 
@@brand1light: lighten(@@brand1, 25%); 
@@brand1lighter: lighten(@@brand1, 50%); 
//Two-------------------------------------------------------------------- 
@@brand2: #@Model.Css.CssBrandColor2; 
@@brand2dark: darken(@@brand2, 25%); 
@@brand2darker: darken(@@brand2, 50%); 
@@brand2light: lighten(@@brand2, 25%); 
@@brand2lighter: lighten(@@brand2, 50%); 

//ADDITIONAL COLORS////////////////////////////////////////////////////// 
//Mono-------------------------------------------------------------------- 
@@blk: #000000; 
@@wht: #FFFFFF; 
//Additional Bobcat Colours (Non-Brand)----------------------------------- 
@@addColour1: #@Model.Css.CssAddColor1; 
@@addColour2: #@Model.Css.CssAddColor2; 
@@addColour3: #@Model.Css.CssAddColor3; 
//Feedback Colors--------------------------------------------------------- 
@@success: #00cc00; 
@@warning: #ffdb4d; 
@@danger: #ff4d4d; 

//TEXT//////////////////////////////////////////////////////////////////// 
//Properties-------------------------------------------------------------- 
@@fontcolour: @Model.Css.CssFontColor; 
@@fontsize: @Model.Css.CssFontSize px; 
@@fontfamily: @Model.Css.CssFontFamily; 
@@fontweight: @Model.Css.CssFontWeight; 

//BUTTONS///////////////////////////////////////////////////////////////// 
.button { 
    border: 0 none; 
    border-radius: 2px 2px 2px 2px; 
    color: @@brand1; 
    cursor: pointer; 
    display: inline-block; 
    line-height: 20px; 
    margin-bottom: 0; 
    margin-top: 10px; 
    padding: 7px 10px; 
    text-transform: none; 
    transition: all 0.3s ease 0s; 
    -moz-transition: all 0.3s ease 0s; 
    -webkit-transition: all 0.3s ease 0s; 
    width: auto; 
    background: none repeat scroll 0 0 @@brand2; 
    white-space: nowrap; 
    font-variant: small-caps; 
    &:hover { 
    background-color: @@brand2darker; 
    color: @@brand1lighter; 
    text-decoration:underline; 
    } 
} 

そして_layoutページ:

<link href="@Url.Action("CssDynamic", "Base")" rel="stylesheet" type="text/less"/> 

答えて

1

は、私の知る限り理解し、あなたがかみそりビューエンジンを使用してファイルをCSSレンダリングするためのカスタム・ビュー・エンジンを作成する必要があります。 - あなたはCSSViewEngineクラスを格納しますその例でDynamic Stylesheets Using Razor

+0

これはSOの答えはそれについてより多くの情報を持っていますか?モデルやコントローラーで、またはそれは関係ありませんか? –

+0

このDLLを別のプロジェクトで作成して、このDLLを他のプロジェクトで再利用することもできますが、実際には関係ありません。もっと理にかなっていると感じるたびにそれを入れてください。 –

+0

チャームのように働いてくれてありがとう! –

関連する問題