none
用户控件中的IMG问题 RRS feed

  • 问题

  • 定义了一个用户控件代码如下:
    <%@ Control Language="C#" AutoEventWireup="true" CodeFile="Header.ascx.cs" Inherits="UserControls_Header" %>
    <p align="center">  
        <a href="../Default.aspx">
        <img alt="" src="../ImageFolders/Images/BalloonShopLogo.png" />
        <br />
        <asp:Image ID="Image1" runat="server"
            ImageUrl="~/ImageFolders/Images/BalloonShopLogo.png" />
    </a>
    </p>
    在用户控件设计页中两个图片都能正确显示,但到了控件的页面中时<img alt="" src="../ImageFolders/Images/BalloonShopLogo.png" />不能显示.而<asp:Image ID="Image1" runat="server"
            ImageUrl="~/ImageFolders/Images/BalloonShopLogo.png" />则能正确显示,请问这是什么原因造成的?


    fang
    2009年4月8日 11:53

答案

  • 因为用户控件是作为宿主页面的一部分使用的。你的宿主页面可能是在任何一级目录中,而你的img标签中的图片路径却始终找它上级的某个目录中,因此除非宿主页面的位置正好满足要求,否则图片是无法显示的。
    而Image控件可以解析“~”开头的这种绝对路径表示法,因此无论宿主页面在哪儿都是从绝对路径加载图片,因为此没有问题。
    如果可以的话,在这种情况下,就直接使用Image控件好了。

    理解的越多,需要记忆的就越少
    • 已标记为答案 chinafcl 2009年4月9日 3:54
    2009年4月8日 12:28
    版主
  • 你需要使用
    <img alt="" src="<%=Request.ApplicationPath%>/ImageFolders/Images/BalloonShopLogo.png" />

    孟宪会
    • 已标记为答案 chinafcl 2009年4月9日 3:54
    2009年4月8日 13:48
    版主

全部回复

  • 因为用户控件是作为宿主页面的一部分使用的。你的宿主页面可能是在任何一级目录中,而你的img标签中的图片路径却始终找它上级的某个目录中,因此除非宿主页面的位置正好满足要求,否则图片是无法显示的。
    而Image控件可以解析“~”开头的这种绝对路径表示法,因此无论宿主页面在哪儿都是从绝对路径加载图片,因为此没有问题。
    如果可以的话,在这种情况下,就直接使用Image控件好了。

    理解的越多,需要记忆的就越少
    • 已标记为答案 chinafcl 2009年4月9日 3:54
    2009年4月8日 12:28
    版主
  • 你需要使用
    <img alt="" src="<%=Request.ApplicationPath%>/ImageFolders/Images/BalloonShopLogo.png" />

    孟宪会
    • 已标记为答案 chinafcl 2009年4月9日 3:54
    2009年4月8日 13:48
    版主