以下是我在UI中的图像控件:
<asp:Image ID="Image1" ImageUrl='<%# Bind("strCLogo") %>' runat="server" width="200" Height="200"/>
这是C#代码,我从数据库(customerstbl)抓取图像的链接,但无法将其与图像控件绑定,我可以看到源中的图像链接,但它没有显示:
protected void Page_Load(object sender, EventArgs e)
{
int nCID = Convert.ToInt32( Session["nCID"].ToString());
DataClasses1DataContext _dc = new DataClasses1DataContext();
CustomersTbl _customer = new CustomersTbl();
_customer = _dc.CustomersTbls.Where(a => a.nCID == nCID).FirstOrDefault();
Image1.ImageUrl = _customer.strCLogo.ToString();
}
这是我如何在数据库中保存图像的链接,当我在数据库中保存图像链接时它似乎有问题(它保存整个路径而不是本地目录路径和图像名称)
string s = Server.MapPath("~/Imageslogo/") + Path.GetFileName(LogoUpload.PostedFile.FileName);
LogoUpload.SaveAs(s);
答案 0 :(得分:1)
F:\projects\accounting\Accounting2014\Accounting2014\Imageslogo\100001203240.jpeg
不是Image.ImageUrl Property的正确值,正确的值是~/Imageslogo/100001203240.jpeg
之类的相对路径。
您需要保存数据库的相对路径,使用下面的代码获取相对路径
string imageLocation = string.Format("~/Imageslogo/{0}", Path.GetFileName(LogoUpload.PostedFile.FileName));
并将imageLocation
保存到strCLogo
表的CustomersTbl
列。
答案 1 :(得分:1)
您将图像的路径存储为绝对路径。这有几个原因很糟糕,主要原因是:
我建议您将相对图像路径存储在数据库中。在这种情况下/Imageslogo/100001203240.jpeg
。然后将图像 root 路径(相对路径前的部分)存储在Web.config
文件中。例如。在appSettings
:
<appSettings>
<add key="myApp.Imageroot" value="F:\projects\accounting\Accounting2014\Accounting2014" />
</appSettings>
您可以使用以下代码获取此appSetting
值:
string myRoot = System.Configuration.ConfigurationManager.AppSettings.Get("myApp.Imageroot");
通过完整路径的这两部分,您可以:
顺便说一句,如果您在代码中设置了ImageUrl
属性,则ImageUrl
中的.aspx
属性将变得毫无意义。所以删除它:
<asp:Image ID="Image1" runat="server" width="200" Height="200"/>