Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从数据库动态更改CSS属性_C#_Css_Asp.net Mvc_Html_Razor - Fatal编程技术网

C# 从数据库动态更改CSS属性

C# 从数据库动态更改CSS属性,c#,css,asp.net-mvc,html,razor,C#,Css,Asp.net Mvc,Html,Razor,我试图通过数据库中的一个字段动态地改变CSS属性。我知道我可以加入一堆像这样的if语句 if (@Model["font"] == "arial") //set the font to arial 这会起作用,但会扰乱我的观点。我想知道是否有人有更优雅的解决方案。任何帮助都将不胜感激 如果不需要任何附加逻辑,只需逐字输出模型中的值即可 body { font-family: @Model["font"] } 这里有一些不错的选择: 将样式块直接添加到视图中(如Matthew所建议)

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

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

这会起作用,但会扰乱我的观点。我想知道是否有人有更优雅的解决方案。任何帮助都将不胜感激

如果不需要任何附加逻辑,只需逐字输出模型中的值即可

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

这里有一些不错的选择:

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

  • 您可以生成/缓存从控制器或其他HTTP处理程序提供的样式表。(用于.Net的预处理库)正是这样做的;它获取源代码,将其处理为纯CSS,然后缓存结果

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

  • 如果你真的想变得“花哨”,你可以考虑将模型的属性集成到更少的CSS中。我设想一个预处理步骤,解析模型值,然后允许进行正常的较少预处理(可能使用dotless)

说到更少的CSS,您可以将所有可配置的值提取到不同的文件中,并根据数据库中的值选择正确的变量文件。这会将实际样式完全排除在数据库之外