为什么在asp.net中动态加载css时图像不会加载?

时间:2009-10-19 22:11:07

标签: c# asp.net css

我通过将链接样式属性设置为服务器标记来动态加载css文件。

除图像外,所有css加载都很好。它只显示替代文字。我在page_load事件中这样做。

以下是我的img标记的片段:

<img class="logourl" alt="Header" />

这是logourl的css:

.logourl
{
background-image:url(../images/a-logo.png);
width:169px;
height:61px;
margin-top:5px;
}

当我右键单击图像并查看属性时,它是空白的(大小,地址等)。

3 个答案:

答案 0 :(得分:1)

<img class="logourl" alt="Header" />

<img>标签可以有背景图片属性????这甚至没有意义。

根据MSDN,img对象没有这个属性,所以我想假设它在IE中不受支持是安全的。

你确定你不想要一个跨度,超链接或其他背景图像有意义的属性吗?

编辑

我刚读了@Justin Grant的回答。我猜你可以在图片标签上使用背景图片,但我保留了我的答案,因为这似乎是一种愚蠢的方式。如果您想要的是图像周围的框架,我会创建一个设置宽度和高度的div或span,并在其中创建一个略小的img。

答案 1 :(得分:0)

要在IMG标记上放置背景图像,根据http://www.contentwithstyle.co.uk/content/css-background-image-on-html-image-element,您需要应用CSS填充并确保使用display:block。

此外,如果这是目录路径问题,则图像必须相对于其引用的CSS文件的位置。尝试使用绝对路径来验证这确实是问题,然后尝试各种相对路径以查看它是否得到解决。

如果此时仍未解决,我建议您尝试使用Fiddler(www.fiddlertool.com)来查看正在发出的HTTP请求 - 特别是浏览器请求的实际URL。确保在重新加载Fiddler下的页面之前先清除缓存,这样您就可以确保实际发出请求而不是从缓存中提取。无论如何,将会有三种可能的情况:

  1. Fiddler根本没有要求您提供网址。这指出了CSS的一些问题(例如,未正确加载或语法错误)
  2. Fiddler显示请求的图片网址,但显示404(未找到)或其他错误。这意味着正在请求错误的网址,或者您的网站从该文件夹提供图片时出现问题
  3. Fiddler显示正确的URL,并且从服务器获得200状态(成功)。如果发生这种情况,我很难过!
  4. 右键单击将仅显示IMG标记的SRC。使用后台CSS时,您需要查看源代码。

答案 2 :(得分:0)

我不会称之为动态加载CSS文件。您正在动态设置链接标记中的属性,但CSS文件的加载方式与任何其他CSS文件相同。浏览器看不到任何其他链接标记的任何差异,因此动态设置的网址不是问题的一部分。

图片和css文件位于何处?请记住,url是相对于CSS文件的位置,而不是页面的位置。

请注意,即使您设置了图像的背景图像,它仍会在图像顶部显示替代文字并指示图像未加载。 background-image属性不设置图像的来源。你应该只使用div元素而不是image元素。