【发布时间】:2020-02-07 21:24:53
【问题描述】:
我在 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
有什么方法可以实现吗?
【问题讨论】:
-
我不明白为什么第一句话在问题中,而提到的课程不是。关联?你在说什么课?
-
欢迎来到 Stack Overflow。实际上没有理由不能使用 ASP.NET 动态生成 CSS 文件。除非您依赖于一些更自以为是的服务器控件,否则 ASP.NET 并不真正关心您输出的是 HTML、CSS、JavaScript 还是二进制文件(如 PNG)。因此,假设这是 ASP.NET Web 表单(看起来是这样),您可能会调用例如
<link rel="stylesheet" href="styles.css.aspx">。事实上,为了满足挑剔的浏览器,您甚至可以在.aspx类型中设置 MIME 类型,例如Response.ContentType = "text/css". -
也就是说,如果您的样式特定于每个页面,并且/或者每个请求都在更改,那么通过
<style />元素嵌入您的样式可能更有意义。或者,如果您的样式 在整个站点(或至少多个页面)共享,那么您可能希望将某种级别的输出缓存应用于您的例如styles.css.aspx页面,这样它就不需要每次请求都从数据库中提取数据。当然,我假设您的 CSS 不会经常更改。 -
另外,Sebastien,你目前的方法有什么不适合的?你遇到什么问题?有错误信息吗?什么都没有被退回?是否输出了错误的数据?
-
您的标记中有错字,应该是:
<body runat="server" style="background-image:url(<%=bod_back%>);">
标签: c# asp.net database webforms