Исходя из вашего кода, я предполагаю, что вы используете ASP. NET каркас веб-форм. Как упоминалось в комментариях, нет причин, по которым вы не можете создать файл .aspx
для вывода таблицы стилей CSS. Хотя веб-формы по умолчанию выводят HTML (т. Е. text/html
), его можно использовать для вывода JavaScript, JSON или даже двоичных файлов, таких как PNG.
Очевидно, что для создания таблицы стилей CSS вы не захотите использовать какие-либо самоуверенные серверные элементы управления, которые выводят HTML. И, чтобы быть в безопасности, вы должны установить ContentType
на text/css
, чтобы требовательные браузеры не жаловались на несоответствие типов MIME. Но, кроме этого, это должно выглядеть как обычная страница веб-форм.
Учитывая это, ваш код может выглядеть примерно так:
Отказ от ответственности: Это будет псевдокод, поскольку у меня нет среды готов проверить это уже много лет, как я написал ASP. NET код веб-форм.
styles.css.aspx.cs
Response.ContentType = "text/css";
var backgroundRecords = new SqlCommand("select * from image_back;", conn);
var backgroundImages = new Dictionary<string, string>();
conn.Open();
var reader = backgroundRecords.ExecuteReader();
while (reader) {
backgroundImages.Add(
reader["placement"].ToString(),
reader["nom"].ToString()
);
}
BackgroundStyles.DataSource = backgroundImages;
BackgroundStyles.DataBind();
styles.css.aspx
<asp:Repeater id="BackgroundStyles" runat="server">
<ItemTemplate>
<%# Eval("Key") %> {
background-image: url('<%# Eval("Value") %>');
}
</ItemTemplate>
</asp:Repeater>
Страница вызова
<link rel="stylesheet" href="styles.css.aspx">
Примечания
- Сюда не входят необходимые леса, например, директива
@Page
или Page_Load
событие - Это обобщает запрос для работы с несколькими фонами, поэтому у вас нет запроса для каждого элемента
- Это предполагает, что для каждого типа элемента существует только один фон (например,
body
) - Это также поддержит
placement
с использованием CSS имен классов (например, .header
)
Надеюсь, это поможет!