我有一个站点部署到十几个客户。主网站有一个基本模板,每个客户端都有一个覆盖颜色的客户端文件夹。问题是有很多 CSS 文件,因此进行强制我们更新每个客户端的更改需要很长时间。自动构建过程负责替换更新的文件。
我想改为将 CSS 文件更改为用户控件,然后这些用户控件可以继承自另一个存储客户端特定值的用户控件。
因此,我没有一个 forms.css 文件和一个/client/forms.css 文件,而是一个从包含颜色的用户控件继承的 Forms.ascx 文件。
例如:
<%@ Control Language="C#" ClassName="Forms" %>
<%@ Register TagPrefix="css" TagName="Client" Src="~/css/ClientStyling.ascx" %>
/* CSS Document */
body
{
color:<%=Client.BodyColor%>
}
然后母版页将从用户控件继承。这将使客户站点的维护更加容易。
那么这个解决方案是否有效且值得推荐?或者是否有更好的方法来实现相同的最终结果?
如果可能的话,是否也可以让 Forms.ascx 控件将标记输出为 CSS?或者制作扩展名 .css 并仍然具有 ascx 属性?
最佳答案
您最好创建一个通用处理程序,而不是 Web 控件。这不会产生 Web 控件的开销。
- 在您的处理程序中,通过查询字符串接受 clientID - 这允许您在客户端级别进行缓存
- 在您的 .master 文件中,您可以链接到它
在您的处理程序中,您可以通过多种方式使用 CSS。
- 只需为 css 编写一堆 response.write,并放入相关的客户端值
- 使用它自己的特殊标识符创建一个外部 CSS 文件 - 也许 <% %>。然后,您可以在 NameValuePair 集合中加载所有客户端特定值,然后循环遍历外部 CSS 文件,解析 <% NAME %> 并替换为正确的值。然后response.write这个文件。确实更复杂,但它允许大量更干净的 CSS 文件
关于c# - 使用C#动态生成CSS文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4147370/