2011-08-26 71 views
2

我搜索谷歌和SO,但没有找到解决方案。在asp.net中动态加载CSS元素

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

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

除了有其自己的每个标签“字体颜色=”,我怎么能显示CSS元素的基础上,从数据库返回的用户个人资料吗? THX

+0

http://msdn.microsoft.com/en-us/library/ms366514.aspx –

回答

4

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

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

然后在CustomStyles.aspx改变默认的内容类型:

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

然后就开始输出你的风格:

Response.Write("#awesome-button{color:" & ColorFromDatabase & ";}" 

确保该文件包含在其他样式之后,所以t它优先考虑。您也可以在此处投入!IMPORTANT

Response.Write("#awesome-button{color:" & ColorFromDatabase & " !IMPORTANT;}" 
+2

+1哇,我觉得我们是一个热死。我不认为我见过“的回答是0秒”之前! http://yfrog.com/j2ojtp –

+3

您应该看到我在eBay上! –

+0

你知道枚举或官方包装本,避免硬编码的或无效的颜色吗?在ASP.NET MVC项目中,任何有意义的东西都可以使用。 – Shimmy

2

这取决于你如何有存储的信息,但你可以将元素通过这样的代码添加样式:

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

或者你可以应用CSS类控制:

Button1.CssClass = "buttonStyle"; 
2

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

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

你可以甚至可能做到这一点很容易足以与传统的ASP页面,Web服务等

的一点是,该网页会产生相同的基本样式,尽显用户选择的正确颜色等。这样,在加载页面后,您不必在服务器端或客户端代码中执行一堆样式更改,或者将您的用户首选项代码与HTML混合,或者如果需要更改基本页面改变样式表的工作方式。这也使得在测试站点本身之外轻松测试样式表。