使用asp.net显示图像

时间:2014-04-30 17:00:20

标签: asp.net

在下面的代码中,我有一个存储在C盘中的图像,我想显示该图像。我试过但我无法解决这个问题。请帮助我解决这个问题。

public string strName = "Sample";
        public string strFolder = "Search";
        public string Imgdocname = "Image0529.jpg";
        protected void Page_Load(object sender, EventArgs e)
        {
            string fileExt = ".jpg";

            if (fileExt == ".jpeg" || fileExt == ".jpg")
            {

                docimg.ImageUrl = "~/" + strName + "/" + strFolder + "/" + Imgdocname;
                docimg.Visible = true;
            }
            else
            {
                docimg.ImageUrl = "~/doc/Documents/image.jpeg";
                docimg.Visible = true;
            }   }



<div ID="imgContainer" runat="server" style="width: 700px; height: 300px;  overflow:auto; border: solid 1px black;
                    padding: 10px; margin-bottom: 5px;" >
<asp:Image ID="docimg" runat="server" />

          </div>

1 个答案:

答案 0 :(得分:0)

问题是你使用波浪号〜符号在后端插入ImageURL属性......但你实际上是将它放入属性中。

代字号的工作方式是.ASPX代码在被发送到浏览器之前被后端解析,并且当解析器遇到&#34;〜&#34;签名,它将其替换为应用程序的相对路径...但是,这只发生在ASPX解析器上。不是后端代码...

所以最后,我敢打赌,如果你在网络浏览器中查看你的页面来源,你会得到这样的结果:

<img src="~/files/images/filename.jpg" />

而不是你真正想要的是:

<img src="../files/images/filename.jpg" />

通过在后端代码中执行此操作:

if (fileExt == ".jpeg" || fileExt == ".jpg")
            {

                docimg.ImageUrl = Request.MapPath("~/" + strName + "/" + strFolder + "/" + Imgdocname);
                docimg.Visible = true;
            }
            else
            {
                docimg.ImageUrl = Request.MapPath("~/doc/Documents/image.jpeg");
                docimg.Visible = true;
            }

这实际上会将波形符号解析为前端所需的实际路径。