您的位置:首页 > 其它

牛腩新闻发布系统-母版页图片不显示问题

2013-06-10 17:56 357 查看
在发布牛腩新闻发布系统时发现主页上的图片不能正常显示,图片不显示肯定是路径出了问题。在网页上右击图片选择属性发现图片的路径果然有问题,找到问题所在解决起来就容易了。更改路径,发布主页图片显示成功,检查其他界面发现其他界面的图片仍旧不显示。经过一番查询终于找到了问题的所在,由于几乎每个页面上都要显示网站的logo图片所以为了方便统一布局和视觉就使用了一个母版页,正是母版页的使用造成了图片不显示,当然究其原因还是路径的问题。下面即这个问题的分析及解决方法。

问题

1.当内容页与模板页在同一目录下时,模板页中的图片可以正常显示。
2.当内容页与模板页不在同一目录下时,模板页中的图片不能正常显示.
3 .既是将图片的地址更改为~/时仍然不能正常显示。

原因:

内容页在生成页面时会把模板页中的内容复制到内容中,与内容页一起合成一个新的页面,此时,如果内容页与模板页不在同一个目录,则摸板页中图片的地址将会找不到,因此图片无法显示.在asp.net中只有服务端才能解~/这样的应用程序主目录地址.

解决方法:

1.在网站发布之后,将模板页中的图片坦进更改为直接地址(不推荐使用)
2 .在<img src="#"/>里面添加runat="server"的服务器标记.这样即使模板页与内容页不在同一目录下时也不会存在图片不能正常显示的问题了。

runat="server"的作用

aspx运行时会被编译,其中没有runat server属性的html标签会被直接写入response,有runat server属性的html标签会转换成对应的HtmlControl子类加入到页面的控件集合中,按照一个控件的生命周期进行处理,这就是"运行在服务器上"的意思.一个最直接的表现就是,当你写一个id="abc"的div,如果有runat
server属性,在你的aspx.cs文件中直接可以使用abc.XXX来操作这个对象,而没有runat server的话,在cs中是没有这个对象的. 以上说的是asp.net中的html控件,asp控件只能runat server,因为他们不是直接和html对应的。

问题解决总结

其实问题的解决还是一个路径的问题,由于网站制作的时候是建立在磁盘上,所以调试的时候并没有什么影响,在网站发布后访问路径被映射成了一个虚拟路径。"~/"只能用于服务器控件,如果用于一般的html标签如img的src属性,则会报错。而"../"既可以用于服务器控件,也可以用户一般的html标签。对于访问图片资源问题,由于网站发布后是以虚拟路径的方式访问所以必须要求服务器必须将图片资源路径进行解析,进而为网站访问提供一个相对的虚拟路径。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: