我在我的ascx文件http://jsfiddle.net/xkRcN/8/中添加了这个代码..当它是aspx文件时...图像(位置是我项目中的“Images”文件夹...现在是flickr)会显示正常...但是当我把这个页面变成一个用户控件并将它添加到我的webform中时,图像消失了。我已经尝试多次更改路径但是它不起作用。用户控件位于“usercontrols”内部,名为folder..image inside “images”在我的页面中命名为文件夹,而我的aspx页面只在根级别。所以我更改了usercontrol的css中的图像路径,如下所示: -
background-image: url(../images/myImage.jpg);
甚至尝试过
background-image: url(../../images/myImage.jpg);
和这个
background-image: url(~/images/myImage.jpg);
但Sprite图像不会显示
用户控件中的其他所有内容都显示得很好..只是图像丢失了......怎么回事?
答案 0 :(得分:1)
正如@Michael所建议的那样,首先测试渲染的html(在浏览器中查看源代码)是否改变了您尝试设置的任何ID。当您使用usercontrols和masterpages时,asp.net控件将更改其ID
同时通过放置该图像的完整路径来检查(在您的浏览器中)图像是否存在。因此,如果您知道图片位于http://example.com/images/myImage.jpg和您的网页(如果您使用用户控件无关紧要)http://example.com/pages/page1.aspx,那么您知道应该这样做:
background-image: url(../images/myImage.jpg);
如果没有任何作用,那就这样做:
background-image: url(http://example.com/images/myImage.jpg);
祝你好运!
修改强>
由于您发现id更改是导致问题的原因,唯一的解决方案是使用类来设置html标记的样式:
HTML
//some people don't know this but you can also put the style directly into the
//asp.net control event if visual studio doesn't support it in the intellisense
<asp:Label id="label1" CssClass="test" style="color:blue;" runat="server" />
CSS
.test { color:red; }
如果你仍然想使用id来设置代码的样式,那么你可以将长生成的id放入你的css代码中,或者升级到asp.net 4,它可以控制你的asp.net id,例如: / p>
<asp:Label id="label1" ClientIDMode="Static" runat="server" />
有第三方解决方案可让您控制asp.net 3.5及更低版本的ID,但它们并非开箱即用,需要一些小小的功能。
答案 1 :(得分:0)
我有同样的问题。我只是在.ascx页面中使用<asp:Image />
控件解决了这个问题,然后就可以了。将ImageUrl引用到images文件夹。