Как Вы отображаете список изображений, от папки на жестком диске, на веб-сайте ASP.NET?

Я пытаюсь сделать простой веб-сайт фотогалереи. Используя 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++;

    }

}
15
задан Vadim Kotov 11 August 2017 в 13:55
поделиться

2 ответа

Сначала вам нужно поместить изображения, которые вы хотите отображать, под веб-деревом. Предположим, вы это сделали, и они находятся в папке с именем Images. Затем вы можете использовать элемент управления Repeater, чтобы отображать их, привязывая его к данным следующим образом:

Что-то вроде этого ...

<asp:Repeater ID="RepeaterImages" runat="server">
    <ItemTemplate>
        <asp:Image ID="Image" runat="server" ImageUrl='<%# Container.DataItem %>' />
    </ItemTemplate>
</asp:Repeater>

А затем в вашем коде позади:

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();
}

Это в основном создает массив изображений с их полными путь из каталога. Затем он создает список строк, содержащих виртуальный путь к изображению. Затем он связывает этот список с повторителем, который отображает каждый элемент в своем шаблоне, который является элемент управления Image, который использует путь как ImageUrl. Это быстро и грязно, но работает и должно быть хорошей отправной точкой.

17
ответ дан 1 December 2019 в 03:24
поделиться

Вы создаете Элемент с URL-адресом C: \ Users \ Jordan \ Desktop \ Web Images \ SomeImage.jpg . Очевидно, это не будет работать в веб-браузере.

Вы должны скопировать изображения в подпапку вашего проекта и установить относительный URL-адрес, например:

img.ImageUrl = "~/Web Images/" + Path.GetFileName(s);

(Предполагается, что папка Web Images является подпапкой корневого каталога приложения )

3
ответ дан 1 December 2019 в 03:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: