在下面的代码中,我有一个存储在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>
答案 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;
}
这实际上会将波形符号解析为前端所需的实际路径。