2013-05-01 53 views
2

我想通过数据库中的一个字段动态改变CSS属性。我知道我可以加入一堆这样的陈述。动态改变数据库中的CSS属性

if (@Model["font"] == "arial") 
//set the font to arial 

这将工作,但会混乱我的看法。我想知道是否有人有一个更优雅的解决方案。任何帮助将不胜感激。

回答

0

如果您不需要任何额外的逻辑,您可以逐字输出模型中的值。

body { 
    font-family: @Model["font"] 
} 
1

一些很好的选择在这里:

  • 添加样式块直接到视图(马修建议)。通常,样式应该放在单独的文件中,但是这样做的一些动机(例如重用)会消失,因为您的源是动态的。

  • 您可以生成/缓存从控制器或其他HTTP处理程序提供的样式表。 dotless(a LESS CSS用于.Net的预处理库)确实如此;它需要一个源代码,将其处理为纯CSS,然后缓存结果。

  • 您可以使用控制器中的DOM生成一些HTML,并将这些样式内联应用。这种技术对所见即所得编辑器生成的HTML非常有用,因为它们通常会生成sub-par标记并需要进行内联调整。

  • 如果你真的想成为“幻想”,你可以看看你的模型的属性集成到LESS CSS。我设想一个解决模型值的预处理步骤,然后允许进行正常的LESS预处理(可能使用无点)。

说到LESS CSS,你可能能够基于数据库中的值你所有的配置值提取到一个不同的文件,只需选择合适的变量文件。这样可以将实际的样式完全保留在数据库之外。