MVC3中的动态主题

时间:2011-04-11 14:32:58

标签: asp.net-mvc-3

我一直致力于一个MVC3新项目,我想介绍动态主题的概念。

而不是创建一堆.css文件并动态链接到 没错,我想在主<style>部分中使用<head>部分 它指定了用于选择器及其属性的值。

这些值将从数据库中提取并以样式写入标题部分, 看起来像这样:

<head>

<style type="text/css">
.testClass { color:Purple;background-color:LightGreen; }
</style>

</head>

1 个答案:

答案 0 :(得分:1)

对于如何实现这一目标本身并不是一个答案,而是一个你重新考虑的建议。多年来我一直看到这种方法已经多次使用,并且它总是首先编写一个专有工具来编辑数据库主题,然后通过昂贵的重写将数据库中的所有主题提取到适当的css文件中。

沿着将样式放入数据库的道路的一个典型原因往往是希望允许在逐个案例的基础上“覆盖”给定样式​​ - 例如,在应用程序服务提供者模型中,其中一个客户只想更改一个或两个默认样式。但是,“级联样式表”中的“级联”允许这种确切的行为,而不会放弃适当的css和相关工具的所有优点 - 只要您在页头中按照正确的顺序排序样式表(例如“maintheme”。 css“首先,然后是”customerX.css“),你只需要重新定义客户样式表中感兴趣的样式,它们将自动覆盖主题样式表中的样式(假设css选择器具有相同的优先级)。

与数据库驱动的样式表一起使用的相关但略有不同的原因是允许最终用户或业务所有者自己编辑样式。除了少数例外情况之外,这种特性在实践中的使用较少,而且在绘制时比在绘制时更难以维护。在这种情况下,自定义样式的数量理论上非常小 - 可能完全受限 - 并且您将编写一个专有工具来允许对它们进行编辑,所以我再次建议简单地将自定义样式写入a文件系统上的css文件,而不是数据库(或作为CDN的blob等)。