在 asp.net 中动态加载 CSS 元素

Posted

技术标签:

【中文标题】在 asp.net 中动态加载 CSS 元素【英文标题】:Dynamically loading CSS elements in asp.net 【发布时间】:2011-11-04 15:00:48 【问题描述】:

我搜索了 google 和 SO,但没有找到解决方案。

我有一个 asp.net 网络应用程序,它允许用户自定义一些 GUI 方面(例如字体颜色、添加自定义徽标等)。此信息存储在用户配置文件数据库中。

我有一个填充字体颜色等的 css 文件。主页面,从数据库加载用户配置文件,并相应地自定义页面。

除了让每个标签都有自己的“font-color=”之外,如何根据从数据库返回的用户配置文件信息来显示 CSS 元素?谢谢

【问题讨论】:

msdn.microsoft.com/en-us/library/ms366514.aspx 【参考方案1】:

您可以包含一个指向 ASPX 页面的额外 CSS 文件:

<link rel="stylesheet" type="text/css" href="/CustomStyles.aspx" />

然后在CustomStyles.aspx更改默认的content-type:

Response.Clear()
Response.ContentType = "text/css"

然后开始输出你的样式:

Response.Write("#awesome-buttoncolor:" & ColorFromDatabase & ";"

确保此文件包含在其他样式之后,以便优先。您可能还想在其中扔一个!IMPORTANT

Response.Write("#awesome-buttoncolor:" & ColorFromDatabase & " !IMPORTANT;"

【讨论】:

+1 哇,我认为我们已经死了。我想我以前从未见过“0 秒内回答”! yfrog.com/j2ojtp 你知道一个枚举或官方包装器,以避免硬编码或无效颜色吗?在 ASP.NET MVC 项目中使用任何有意义的东西。【参考方案2】:

这取决于您如何存储信息,但您可以通过如下代码为元素添加样式:

Button1.Style["font-weight"] = "bold";

或者你可以只对控件应用一个 CSS 类:

Button1.CssClass = "buttonStyle";

【讨论】:

【参考方案3】:

您可以有一个页面,该页面仅根据存储在数据库中的首选项返回一个 CSS 文件。所以你会有:

<link rel="stylesheet" href="somepage.aspx?userid=<%=userID%>">

您甚至可以使用经典的 ASP 页面、Web 服务等轻松做到这一点。

关键是该页面将生成相同的基本样式表,填充用户选择的正确颜色等。这样,您不必在页面加载后在服务器端或客户端代码中执行大量样式更改,或者将您的用户偏好代码与您的 html 混合,或者根据需要对基本页面进行大量更改更改样式表的工作方式。除了测试网站本身之外,它还可以轻松测试样式表。

【讨论】:

以上是关于在 asp.net 中动态加载 CSS 元素的主要内容,如果未能解决你的问题,请参考以下文章

在asp.net网站中动态加载用户控件(ascx)

在 ASP .NET MVC 5 中动态更改 LAYOUT 或 STYLESHEET

ASP.NET动态创建控件

在 ASP.Net Web 表单/MVC 中动态加载和添加字段

JQuery datepicker() 由 ASP.net 中的 CSS 类动态创建 TemplateFields

从 ASP.NET 服务器控件动态添加 CSS 文件