ASP.NET/C#,如何从CSS /样式表中的数据库中获取数据?

问题描述 投票:0回答:1

我实际上在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

有没有办法做到这一点?

非常感谢,

塞巴斯蒂安。

c# asp.net database
1个回答
0
投票

如评论中所述,没有理由不能使用ASP.NET Web表单(我假设您是根据代码使用的)来输出CSS样式表。显然,您不想使用任何自以为是的服务器控件(即输出HTML的控件),并且为了安全起见,应将MIME类型设置为text/css。因此,您的代码可能类似于以下内容:

免责声明:这将是伪代码,因为我没有准备好进行测试的环境,而且自编写ASP.NET Web窗体代码以来已经有好几年了。

C#代码

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();

ASPX代码

<asp:Repeater id="BackgroundStyles" runat="server">
  <ItemTemplate>
    <%# Eval("Key") %> {
      background-image: url('<%# Eval("Value") %>');
    }
  </ItemTemplate>
</asp:Repeater>  

注意

  • 这假设您要输出到CSS文件(例如styles.css.aspxstyles.css.aspx.cs
  • 这不包括必要的脚手架,例如@Page指令或Page_Load事件
  • 这将查询泛化为可在多个背景下使用,因此您没有针对每个元素的查询
  • 这假设每种元素类型(例如body)只有一个背景
  • 这还将支持使用CSS类名(例如placement)的.header
© www.soinside.com 2019 - 2024. All rights reserved.