我实际上在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标记-已经直接在CSS中尝试过(会更好)
<body runat="server" style="background-image:url(<%bod_back%>);">
//Database columns
placement = BODY (where i put the image) ex: in this case body in columns placement
nom = /images/bodyback.jpg
有没有办法做到这一点?
非常感谢,
塞巴斯蒂安。
如评论中所述,没有理由不能使用ASP.NET Web表单(我假设您是根据代码使用的)来输出CSS样式表。显然,您不想使用任何自以为是的服务器控件(即输出HTML的控件),并且为了安全起见,应将MIME类型设置为text/css
。因此,您的代码可能类似于以下内容:
免责声明:这将是伪代码,因为我没有准备好进行测试的环境,而且自编写ASP.NET Web窗体代码以来已经有好几年了。
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"], reader["nom"]);
}
BackgroundStyles.DataSource = backgroundImages;
BackgroundStyles.DataBind();
<asp:Repeater id="BackgroundStyles" runat="server">
<ItemTemplate>
<%# Eval("Key") %> {
background-image: url('<%# Eval("Value") %>');
}
</ItemTemplate>
</asp:Repeater>
styles.css.aspx
,styles.css.aspx.cs
)@Page
指令或Page_Load
事件body
)只有一个背景placement
)的.header