如何在ASP.NET网站上显示硬盘驱动器上的文件夹列表?

PIC*_*ain 15 html c# asp.net listview image

我正在尝试制作一个简单的照片库网站.使用ASP.NET和C#.现在我没有设置服务器,但我只是使用Visual Studio在制作网站项目并运行时开始的开发.

我的硬盘上有一个包含未知数量图像的文件夹.我想写一段代码,将遍历每个图像并将它们添加到默认网页.我尝试过这段代码,但它不起作用.我究竟做错了什么?我应该使用ListView控件还是DataView或类似的东西?我是否需要添加虚拟目录才能访问图像?如果是这样,我该怎么在这个测试服务器上呢?

另外,如何设置这些图片的位置和对齐方式?例如,我如何制作它以使图片在网页上垂直排列并居中?

protected void Page_Load(object sender, EventArgs e)
{
    string[] filesindirectory = Directory.GetFiles(@"C:\Users\Jordan\Desktop\Web Images");
    int i = 1;
    foreach (string s in filesindirectory)
    {
        Image img = new Image();
        img.ID = "image" + i.ToString();
        img.ImageUrl = s;
        img.Visible = true;
        Page.Controls.Add(img);
        i++;

    }

}
Run Code Online (Sandbox Code Playgroud)

Dan*_*plo 17

首先,您需要将要显示的图像放在Web树下.我们假设您已经完成了这些操作,并且它们位于名为Images的文件夹中.然后,您可以使用Repeater控件通过数据绑定来显示它们,如下所示:

像这样......

<asp:Repeater ID="RepeaterImages" runat="server">
    <ItemTemplate>
        <asp:Image ID="Image" runat="server" ImageUrl='<%# Container.DataItem %>' />
    </ItemTemplate>
</asp:Repeater>
Run Code Online (Sandbox Code Playgroud)

然后在你的代码背后:

protected void Page_Load(object sender, EventArgs e)
{
    string[] filesindirectory = Directory.GetFiles(Server.MapPath("~/Images"));
    List<String> images = new List<string>(filesindirectory.Count());

    foreach (string item in filesindirectory)
    {
        images.Add(String.Format("~/Images/{0}", System.IO.Path.GetFileName(item)));
    }

    RepeaterImages.DataSource = images;
    RepeaterImages.DataBind();
}
Run Code Online (Sandbox Code Playgroud)

这基本上创建了一个图像数组,其中包含目录中的完整路径.然后它创建一个包含图像虚拟路径的字符串列表.然后它将List绑定到转发器,转发器显示其模板中的每个项目,该模板是使用路径作为ImageUrl的Image控件.这很快,但是有效,应该是一个很好的起点.