我想在我的asp.net网页上显示图像列表。 图片位于文件夹中。 我的aspx代码看起来像这样
<asp:ListView runat="server" ID="lvPicturePaths">
<ItemTemplate>
<img src="<%# Container.DataItem %>" />
</ItemTemplate>
</ListView>
在代码背后我有:
private void GetImagePaths()
{
List<string> pathForPictures=new List<string>();
var path=Server.MapPath("~/images/");
foreach(var PP in Directory.GetFiles(path))
{
pathForPictures.Add(PP);
}
lvPicturePaths.DataSource=pathForPictures;
lvPicturePath.DataBind();
}
问题是img标签的src属性需要相对路径,比如localhost/images...
现在我得到的结果是: C:\Inetpub\wwwroot\images\image1.jpg
答案 0 :(得分:2)
您可以使用:
pathForPictures.Add(
Page.ResolveClientUrl(
System.IO.Path.Combine(
"~/images/",
System.IO.Path.GetFileName(PP)
)
)
);
或者不是做循环:
private void GetImagePaths()
{
const string path = "~/images/";
var pictures =
Directory.GetFiles(Server.MapPath(path))
.Select(p =>
Page.ResolveClientUrl(Path.Combine(path, Path.GetFileName(p))));
lvPicturePaths.DataSource = pictures;
lvPicturePath.DataBind();
}
答案 1 :(得分:1)
尝试使用Page.ResolveUrl而不是Server.MapPath
答案 2 :(得分:1)
使用ResolveUrl
试试此代码
this.ResolveUrl("~/images/")
而不是
Server.MapPath("~/images/");
或只是尝试ResolveUrl("~/images/")
更多详细信息,请参阅Path
的详细说明