Я пытаюсь сделать простой веб-сайт фотогалереи. Используя 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++;
}
}
Сначала вам нужно поместить изображения, которые вы хотите отображать, под веб-деревом. Предположим, вы это сделали, и они находятся в папке с именем 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. Это быстро и грязно, но работает и должно быть хорошей отправной точкой.
Вы создаете Элемент
с URL-адресом C: \ Users \ Jordan \ Desktop \ Web Images \ SomeImage.jpg
. Очевидно, это не будет работать в веб-браузере.
Вы должны скопировать изображения в подпапку вашего проекта и установить относительный URL-адрес, например:
img.ImageUrl = "~/Web Images/" + Path.GetFileName(s);
(Предполагается, что папка Web Images
является подпапкой корневого каталога приложения )