昨天写好一个应用程序,在localhost跑都OK的,发布到IIS后,别人一访问图片不显示,超链接的指向都找不到页面,
F12一看,路径都有问题,不会吧,我写的都是相对地址啊。
母版页中的图片我用的都是img,链接用的是a,
于是第一种方法就是将它们换成服务器端控件,加个runat="server",
这个解决办法会起作用是因为ASP.NET根据这一信息创建一个HtmlImage服务器控件,这个对象在母版页的Page对象实例化后创建,
此时,ASP.NET把所有路径解释为相对于母版页的位置。你可以使用同样的技术来修复<a>标签对其他页面的链接。
你还可以使用根路径语法,并用"~"字符作为URL的开头。
例如,下面这个<img>标签如果前面加"~/",则毫无歧义地指向网站的images文件夹中的butClose.gif文件。
遗憾的是,这种语法只对服务器端控件有效。
如果你要对普通的HTML产生同样的效果,你需要在链接里包含域名的完整的相对路径。这样的HTML代码难看且不可移植,所以不推荐使用。
<a runat="server" href="~/Data/xhEditorDemo.aspx">xhEditor</a>
<img id="barImg" runat="server" src="images/butClose.gif" alt="关闭/打开左栏"/>
如果嫌换成服务器端后写js脚本时ID写起来麻烦,
就用第二种方法ResolveUrl,如:
<img id="barImg" src='<%=ResolveUrl("images/butClose.gif")%>' alt="关闭/打开左栏" />
母版页中引入CSS或JS文件,也类似这样用:
<script src='<%=ResolveUrl("js/jquery-1.4.4.min.js")%>' type="text/javascript"></script>
另外一种是在masterpage里某处使用了background: url(...)这样的写法,
不废话,直接移到外部CSS文件中,最好CSS文件夹,images文件夹,masterpage文件三者在同一目录下(根目录),
剩下就是引入这个CSS文件,把你刚才写background: url(...)的地方换成class="..."。
然后问题应该就解决了,是滴吧!