当我在后面的代码中设置带有 url 的图像时,它不起作用,我不知道为什么?
if (File.Exists(Server.MapPath("~/Images/EmpQr/") + int.Parse(Session["userID"].ToString()) + ".PNG")) //It passes this condition
{
tr_res.Visible = true;
img_res.ImageUrl = Server.MapPath("~/Images/EmpQr/" + int.Parse(Session["userID"].ToString()) + ".PNG"); //Here 's the problem ,no image
}
else
{
tr_res.Visible = false;
}
<asp:Image ID="img_res" runat="server" AlternateText="result" />
当我这样设置图片url时
ImageUrl ="~/Images/EmpQr/1345.PNG"
在设计 View 中它有效。
如何解决这个问题?
最佳答案
Server.MapPath
为您提供文件的本地路径。虽然您真正想要的是相对于应用程序根路径(在服务器上!)。为此,您已经拥有的 ~/Images/EmpQr/
很好,因此只需将文件名附加到它:
img_res.ImageUrl = string.Format("{0}{1}.PNG", "~/Images/EmpQr/", int.Parse(Session["userID"].ToString()));
更新。出于好奇,经过评论讨论,这里是Image
控件源码的相关部分,证明了形式的url~/Images/...
将被正确处理:
protected override void AddAttributesToRender(HtmlTextWriter writer)
{
base.AddAttributesToRender(writer);
string text = this.ImageUrl;
if (!this.UrlResolved)
{
text = base.ResolveClientUrl(text);
}
if (this.RenderingCompatibility >= VersionUtil.Framework45)
{
if (!string.IsNullOrEmpty(text) || base.DesignMode)
{
writer.AddAttribute(HtmlTextWriterAttribute.Src, text);
}
}
else
{
if (text.Length > 0 || !base.EnableLegacyRendering)
{
writer.AddAttribute(HtmlTextWriterAttribute.Src, text);
}
}
//...
关于c# - 在代码隐藏中设置其 url 时无法呈现图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18054435/