c# - 在 ASP.NET/C# 中,如何从数据库中获取数据到 CSS 样式表中?
问题描述
我在 ASP.NET 中有一个类来从数据库中检索与样式表相关的数据。
免责声明:我知道这样做不是最佳选择,但这就是我的老师想要的。
我需要创建一个网站,除标签外的所有内容(文本、背景图像等)都直接来自数据库。我的问题是:我无法获取我的数据并将其直接插入到我的 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
= BODY(我放置图像的位置;例如,在这种情况下为身体背景)nom
= /images/bodyback.jpg
有没有办法做到这一点?
解决方案
根据您的代码,我假设您使用的是 ASP.NET Web 窗体框架。正如评论中提到的,没有理由不能创建.aspx
文件来输出 CSS 样式表。虽然 Web 窗体默认输出 HTML(即text/html
),但它可以用于输出 JavaScript、JSON 甚至是 PNG 等二进制文件。
显然,要创建 CSS 样式表,您不会想要使用任何输出 HTML 的固执己见的服务器控件。而且,为了安全起见,您应该将 设置ContentType
为text/css
以便挑剔的浏览器不会抱怨 MIME 类型不匹配。但是,除此之外,这应该看起来就像一个普通的 Web 表单页面。
鉴于此,您的代码可能如下所示:
免责声明:这将是伪代码,因为我没有准备好测试它的环境,而且我已经多年没有编写 ASP.NET Web 窗体代码了。
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
)
希望这可以帮助!
推荐阅读
- javascript - [Vue 警告]:v-on 处理程序中的错误:“TypeError:无法设置未定义的属性‘电子邮件’”
- python - 如何将用户输入限制为已存储为变量的特定字符串?
- php - 计算需要多少个盒子来容纳可变尺寸的物品
- excel - 突出显示电子表格中具有一定数量匹配列值的行
- c++ - libmysqlclient.a(client.co) 与 elf_i386_fbsd 不兼容
- c++ - 为什么 std::erase(std::erase_if) 不是模板
适用于任何容器? - html - 造型父母
- 而不是儿童 CSS
- java - 如何从java中的父对象列表中获取子对象列表
- python - 使用 TF Estimator 时 Tensorflow 分布式训练的损失和学习率缩放策略
- java - 为什么我不能在没有 netbeans 的情况下使用 netbeans 项目?