在 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 MVC 5 中动态更改 LAYOUT 或 STYLESHEET
在 ASP.Net Web 表单/MVC 中动态加载和添加字段