如何获取src属性的图像相对路径

时间:2013-08-19 17:22:10

标签: asp.net path

我想在我的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

3 个答案:

答案 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

的详细说明