c# - 从数据库动态改变 CSS 属性

标签 c# css asp.net-mvc html razor

我正在尝试能够通过数据库中的字段动态更改 CSS 属性。我知道我可以像这样放入一堆 if 语句。

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

这会起作用,但会使我的 View 困惑。我想知道是否有人对此有更优雅的解决方案。任何帮助将不胜感激。

最佳答案

这里有一些不错的选择:

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

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

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

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

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

关于c# - 从数据库动态改变 CSS 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16327128/

相关文章:

asp.net-mvc - 字符串模型,将值传递给 Controller ​​问题

c# - MVC : Dictionary requires a model item of type 'System.Collections.Generic.IEnumerable` 1

c# - 在重写的 void 中运行异步方法

c# - 将 Surface 保存为位图并在 C# 中优化 DirectX 屏幕捕获

c# - 如何避免 System.IO.PathTooLongException?

c# - 如何在 Quartz.net 的 Interrupt 方法中访问 IJobexecutionContext?

html - Bootstrap 4 - 在 css 中通过根名称引用颜色

c# - 将任何 n 位数字四舍五入为 (n-1) 个零位

html - 在右侧的输入内添加 Bootstrap 图标

javascript - JQuery 移动 IOS 设备如何删除 Web 上的默认滚动