c# - 使用C#动态生成CSS文件

标签 c# asp.net css

我有一个站点部署到十几个客户。主网站有一个基本模板,每个客户端都有一个覆盖颜色的客户端文件夹。问题是有很多 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 控件的开销。

  1. 在您的处理程序中,通过查询字符串接受 clientID - 这允许您在客户端级别进行缓存
  2. 在您的 .master 文件中,您可以链接到它

在您的处理程序中,您可以通过多种方式使用 CSS。

  1. 只需为 css 编写一堆 response.write,并放入相关的客户端值
  2. 使用它自己的特殊标识符创建一个外部 CSS 文件 - 也许 <% %>。然后,您可以在 NameValuePair 集合中加载所有客户端特定值,然后循环遍历外部 CSS 文件,解析 <% NAME %> 并替换为正确的值。然后response.write这个文件。确实更复杂,但它允许大量更干净的 CSS 文件

关于c# - 使用C#动态生成CSS文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4147370/

相关文章:

html - 表格最后一行下方的神秘线条

css - 如何仅从屏幕阅读器而不是普通用户的页面隐藏页面中的任何元素?

c# - Dapper 异步和事务

.net - FormView.FindControl() 在 DataBind() 之前返回 null

c# - 如何将 Windows 身份验证与 Flurl 库一起使用?

c# - 在 DataSet 中使用函数时为 "undefined function call"

asp.net - Setting.settings 和 web.config 之间的区别?

php - 将 CSS 添加到默认的 Google Chrome 打印

c# - gridview 上的复选框事件?

c# - 将多个子组件作为参数传递