0

asp.net Web ページに画像の一覧を表示したいと考えています。写真はフォルダにあります。私の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

4

3 に答える 3

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();
}
于 2013-08-19T17:35:20.600 に答える
1

使用するResolveUrl

このコードを試してください

this.ResolveUrl("~/images/")

それ以外の

Server.MapPath("~/images/");

または単に試してみてくださいResolveUrl("~/images/")

詳細については、パスのこの適切な説明を参照してください

于 2013-08-19T17:39:05.983 に答える
1

Server.MapPath の代わりに Page.ResolveUrl を試してください

于 2013-08-19T17:24:52.937 に答える