2015-09-22 58 views
1

我想獲得不同的輸入CSS。使用自定義剃鬚刀視圖引擎。如果我只從1碰撞的數據庫中獲取數據,它就可以工作。但我想替換CSS讓我們說不同的用戶。Razor MVC中的動態CSS

我使用自定義Foo.CSCSS作爲視圖,我的剃刀CSS被舉行。而MyViewModel從數據庫中獲取數據。

像這樣。

public MongoDatabase Mongo; 
    [HttpPost] 
      public ActionResult Foo(string Input) 
      { 
       var collection = Mongo.GetCollection<MyViewModel>(Input); 
       var model = collection.FindAll().ToList<MyViewModel>().FirstOrDefault(); 
    return View(model); 

    @using (Html.BeginForm("Foo", "Styles", FormMethod.Post)) 
    { 
     <fieldset> 
      <label for="sub">Get you CSS.</label> 
      <br /> 
      <input id="txtEmail" type="text" name="Input" placeholder="Type in an CSS collection" required> 
      <input type="submit" name="submit" value="Press"> 
     </fieldset> 

返回我一個CSS作爲視圖,而不是將其作爲CSS插入。

@model CustomViewEngine.Models.MyViewModel 

body { 
    background-color: red; 
} 

div.col-md-4 { 
    background-color: @Model.BGColor; 
    text-decoration: @Model.TextDec; 
    border-style: @Model.BRDStyle; 
    border-width: @Model.BRDWidth; 
} 
div.yo { 
background-color: blue; 
} 

有沒有解決這個問題?

public ActionResult Foo() 
     { 
      var collection = Mongo.GetCollection<MyViewModel>("CollectionName"); 
      var model = collection.FindAll().ToList<MyViewModel>().FirstOrDefault(); 
return View(model); 

像這樣,它的工作原理和從數據庫中獲取數據。並將其用作CSS。我可能沒有解釋CSS不完全是CSS,而是自定義擴展Foo.CSCSS,我解析並以View的形式提供。

我把這個作爲例子Dynamic Stylesheets Using Razor

回答

0

我認爲你需要包裝內<style>屬性動態CSS部分。從我的結尾,我嘗試了下面的東西,它的工作原理:

<style> 
    div.col-md-4 { 
     background-color: @Model.BGColor; 
     text-decoration: @Model.TextDec; 
     border-style: @Model.BRDStyle; 
     border-width: @Model.BRDWidth; 
    } 
</style> 

如果問題仍未解決,請發表評論。

+0

沒有工作。我認爲問題是控制器方面。如果我使用「請參閱主要問題中的編輯」,它將起作用。 –

+0

你想說你沒有從數據庫本身獲取數據嗎? – Saket

+0

這有點解釋我正在使用這種方法:http://stackoverflow.com/questions/10279873/dynamic-stylesheets-using-razor 但我從數據庫中獲取數據。只是以一種複雜的方式。 –

0

在MVC中,您可以根據條件,代碼進行渲染,並將其與HTML混合在一起,所以只需在CSS文件中移動樣式並根據條件渲染文件即可。

if(some condition is true) 
{ 
render a style here 
} 
else if(other condition) 
{ 
render other style 
} 
else 
{ 
default style 
} 

你也可以把這個在你的頁面佈局,這些條件可以是任何東西,就像你說的用戶類型檢查廣告所有。

+0

但我認爲CSS不接受數據庫數據。這就是爲什麼我使用這種奇怪的方法。我試着用.Less,但無法運行。 –