从数据库动态更改CSS属性

时间:2013-05-01 21:52:33

标签: c# css asp.net-mvc html5 razor

我试图通过数据库中的字段动态改变CSS属性。我知道我可以输入一堆像这样的if语句。

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

这会有效,但会使我的观点变得混乱。我想知道是否有人对此有更优雅的解决方案。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

这里有一些不错的选择:

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

  • 您可以生成/缓存从控制器或其他HTTP处理程序提供的样式表。 dotless(.Net的LESS CSS预处理库)正是这样做的;它需要一个源,将其处理成纯CSS,然后缓存结果。

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

  • 如果您真的想要“喜欢”,可以考虑将模型的属性集成到LESS CSS中。我设想了一个解决模型值的预处理步骤,然后允许正常的LESS预处理(可能使用无点)。

说到LESS CSS,您可以将所有可配置值提取到不同的文件中,然后根据数据库中的值选择正确的变量文件。这样可以将实际样式完全保留在数据库之外。

答案 1 :(得分:0)

如果您不需要任何其他逻辑,则只需逐字输出模型中的值即可。

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