母版页图片路径问题:子文件夹页面无法显示图片如何解决?
解决ASP.NET母版页图片跨文件夹显示问题
这问题我太熟悉了!核心原因是你用了相对路径——当页面放在Folder1或Folder2这类子文件夹里时,浏览器会默认从当前子文件夹下去找Images目录,可你的Images明明在网站根目录,自然就找不到图片了。给你几个靠谱的解决办法,按推荐程度排序:
1. 用ASP.NET根路径标记(最稳妥,推荐首选)
ASP.NET里的~符号代表网站根目录,但浏览器本身不认识它,所以需要让服务器帮忙解析成正确的路径。有两种实现方式:
- 给
<img>标签加上runat="server"属性:
服务器在渲染页面时,会自动把<img runat="server" src="~/Images/logo1.png" alt="hallmark" />~转换成对应网站根的路径,不管你的页面在根目录还是子文件夹里,都能精准找到图片。 - 或者用
Page.ResolveUrl()方法动态解析路径:
这种方式不需要给<img src='<%= Page.ResolveUrl("~/Images/logo1.png") %>' alt="hallmark" /><img>加runat属性,服务器会在页面渲染时替换成正确的绝对路径,效果和上面一样。
2. 使用网站根绝对路径(适合部署在根域名的场景)
直接把路径写成以/开头的形式:
<img src="/Images/logo1.png" alt="hallmark" />
这里的/代表网站的根目录,但要注意:如果你的网站部署在虚拟目录下(比如http://yourdomain.com/yourwebapp/),这种方式会直接去http://yourdomain.com/Images/找图片,而不是虚拟目录下的Images,所以只适合网站直接部署在根域名的情况。
3. 手动构造相对路径(不推荐,维护麻烦)
比如在母版页里写../Images/logo1.png,但这种方式只适用于一级子文件夹的页面,如果以后有更深层级的文件夹,又得修改路径,维护起来非常麻烦,所以不建议用。
总结一下,优先用第一种方法,不管网站怎么部署都不会出问题,省心又靠谱!
内容的提问来源于stack exchange,提问作者Haminteu
相关产品推荐
相关产品推荐

