0

我需要为每个客户在现有的 asp.net 网站上贴上白色标签(特别是更改标题徽标/菜单/字体颜色)。客户将能够为网站选择他们想要的颜色。

该站点是一个门户网站,由多个网站组成。我不想使用主题或不同的母版页,因为我们没有足够的带宽来大量重组应用程序。据我所知,我有几个选择。我想知道是否有更多或有人知道其他更好/最好的方法来做到这一点。前两个选项可能相似,但一个可能是更好的性能。

为所有“颜色更改”部分提供一个虚拟 css 类 - 比如说 customColor。

例子

<div class="menu customColor" />
<div class="header customColor" />

菜单和标题 css 类包含除颜色之外的所有样式。

  1. 加载母版页时,以编程方式向此 css 类添加颜色。伪代码:Page.Header.Controls.Add(New LiteralControl("<style type=""text/css""> .customColor { color: blue }");

  2. customColor { color:blue };让 asp.net ashx 处理程序返回包含此 css 并将其动态添加到页面的whiteLabel.css 。

  3. 每个页面中需要更改的元素并不多。您可以在每个页面中设置一个从数据库设置适当颜色的函数。

我假设我的选择几乎是动态更改 css 或以编程方式为单个元素设置颜色。

另外我认为选项#1可能比#2更好,因为css会缓存在#2上吗?这将使公司难以改变颜色。

4

2 回答 2

0

让我们也排除选项 3,如果在页面加载期间发生 javascript 错误,它可能无法重新设置页面。

这留下了选项 1,尽管您可能想要一些更具可读性的东西:

<style>
    .menu.customColor { color: <%= menuColor %>; }
    .header.customColor { color: <%= headerColor %>; }
</style>
于 2014-03-31T13:20:00.197 回答
0

您的所有页面是否都使用一个共同的 MasterPage?如果是这样,那么我曾经使用过为 body 设置一个类,或者可能是一个 div 包装器,例如:

<div class='<%= GetCustomClass() %>'>
    <div class="menu customColor" />
    <div class="header customColor" />
</div>

GetCustomClass 是一个静态方法,它将根据客户的选择返回说 class1 或 class2。css 看起来像:

class1.customColor{color:blue;}
class2.customColor{color:red;}

希望有帮助。

于 2014-03-25T20:38:31.643 回答