Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在ASP.NET/C中,如何将数据从数据库获取到CSS样式表中?_C#_Asp.net_Database_Webforms - Fatal编程技术网

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

C# 在ASP.NET/C中,如何将数据从数据库获取到CSS样式表中?,c#,asp.net,database,webforms,C#,Asp.net,Database,Webforms,我在ASP.NET中有一个类,用于从数据库检索样式表相关数据 免责声明:我明白这样做不是最好的,但这是我的老师想要的 我需要做一个网站,所有的文字,背景图像等,除了标签直接来自数据库。我的问题是:我无法将数据直接插入CSS样式表 我正在扭转这样的局面: C代码 SqlCommand body_bg=新SqlCommandSelect*从图像_后面的placement='body';,康涅狄格州; 康涅狄格开放大学; SqlDataReader=body_bg.ExecuteReader; 当读者

我在ASP.NET中有一个类,用于从数据库检索样式表相关数据

免责声明:我明白这样做不是最好的,但这是我的老师想要的

我需要做一个网站,所有的文字,背景图像等,除了标签直接来自数据库。我的问题是:我无法将数据直接插入CSS样式表

我正在扭转这样的局面:

C代码 SqlCommand body_bg=新SqlCommandSelect*从图像_后面的placement='body';,康涅狄格州; 康涅狄格开放大学; SqlDataReader=body_bg.ExecuteReader; 当读者 bod_back=读取器[nom].ToString; HTML标记 注意:如果这是直接在CSS样式表中就更好了。然而,我已经试过了,但没有成功

数据库列 放置=我放置图像的主体;e、 例如,在本例中为主体背景 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 SqlCommandselect*from image_back;,康涅狄格州; var backgroundImages=新字典; 康涅狄格开放大学; var reader=backgroundRecords.ExecuteReader; 当读者{ 背景图片。添加 读卡器[placement]。ToString, 读卡器[nom].ToString ; } BackgroundStyles.DataSource=背景图像; BackgroundStyles.DataBind; styles.css.aspx 呼叫页 笔记 这不包括必要的脚手架,例如@Page指令或Page_加载事件 这将查询概括为适用于多个背景,因此您没有针对每个元素的查询 这假设每个元素类型(例如主体)只有一个背景 这也将支持使用CSS类名(例如header)进行放置
希望这有帮助

我不明白为什么第一句话出现在问题中,而所提到的班级不是。关联你在说什么课?欢迎来到堆栈溢出。实际上,没有理由不能使用ASP.NET动态生成CSS文件。除非您依赖于一些更固执己见的服务器控件,否则ASP.NET并不真正关心您是否输出HTML、CSS、JavaScript,甚至是PNG之类的二进制文件。因此,假设这是ASP.NET Web表单,您可能需要调用,例如。事实上,为了满足挑剔的浏览器,您甚至可以在.aspx type中设置MIME类型,例如Response.ContentType=text/css。也就是说,如果您的样式特定于每个页面,并且/或者每个请求都在更改,那么通过元素嵌入样式可能更有意义。或者,如果您的样式在整个站点或至少多个页面上共享,则您可能希望对您的页面(例如styles.css.aspx页面)应用某种级别的输出缓存,这样就不需要每次请求都从数据库中提取数据。当然,我假设你的CSS没有频繁变化。还有,塞巴斯蒂安,你目前的方法有什么不起作用?你遇到了什么问题?是否有错误消息?什么也不退吗?是否输出了错误的数据?标记中有输入错误,可能是:
<asp:Repeater id="BackgroundStyles" runat="server">
  <ItemTemplate>
    <%# Eval("Key") %> {
      background-image: url('<%# Eval("Value") %>');
    }
  </ItemTemplate>
</asp:Repeater>  
<link rel="stylesheet" href="styles.css.aspx">