我试图通过数据库中的字段动态改变CSS属性。我知道我可以输入一堆像这样的if语句。
if (@Model["font"] == "arial")
//set the font to arial
这会有效,但会使我的观点变得混乱。我想知道是否有人对此有更优雅的解决方案。任何帮助将不胜感激。
答案 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"]
}