В ASP .NET / C# как получить данные из базы данных в таблицу стилей CSS? - PullRequest
0 голосов
/ 08 февраля 2020

У меня есть класс в ASP. NET для извлечения связанных с таблицей стилей данных из базы данных.

Отказ от ответственности: Я понимаю, что это не оптимально делать так, как это, но так хочет мой учитель.

Мне нужно сделать сайт, на котором все (текст, фоновое изображение и т. д. c.), за исключением тегов, исходит непосредственно из база данных. Моя проблема в том, что я не могу взять свои данные и вставить их непосредственно в мою CSS таблицу стилей.

Я оборачиваюсь примерно так:

C# Код

SqlCommand body_bg = new SqlCommand("Select * from image_back where placement='body';", conn);
conn.Open();

SqlDataReader reader = body_bg.ExecuteReader();

while (reader) 
    bod_back = reader["nom"].ToString();

HTML разметка

<body runat="server" style="background-image:url(<%bod_back%>);">

Примечание: Было бы лучше, если бы это было непосредственно в таблице стилей CSS. Я уже пробовал это, однако, безуспешно.

Столбцы базы данных

  • placement = ТЕЛО (где я положил изображение; например, в данном случае для фона тела)
  • nom = / images / bodyback.jpg

Есть ли способы сделать это?

1 Ответ

1 голос
/ 08 февраля 2020

Исходя из вашего кода, я предполагаю, что вы используете 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)

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...