• Microsoft .NET
  • ASP.NET
  • Отображение случайно выбранного изображения на веб-странице ASP.NET

Отображение случайно выбранного изображения на веб-странице ASP.NET - Показываем изображение, случайно выбранное из каталога

ОГЛАВЛЕНИЕ

Показываем изображение, случайно выбранное из каталога

Простейшим способом отображения произвольного изображения будет: добавление элемента управления Image на вашу страницу (либо мастер-страницу (Master Page)), написание небольшого кода, который получит все изображения из файлов определенного каталога, используя класс Random для случайного отбора изображения из списка, а также назначения пути к данному случайно выбранному изображению свойства ImageUrl элемента управления Image. Это все можно уместить в 10 строках кода.

Чтобы продемонстрировать  технические способы, рассматриваемые в данной статье, я создал простое демо-приложение в ASP.NET 2.0, которое вы можете загрузить в конце данной статьи. Это приложение включает в себя мастер-страницу, названную ImagesFromDirectory.master, которая определяет страницу шириной в 800 пикселей. В верхних 250 пикселях вы увидите элемент управления ASP.NET Image, названный HeaderImage, который отображает наугад выбранное изображение. Каталог ~/Images/HeaderImages/ содержит пять изображений, которые будут откалиброваны под размер в 800x250 пикселей. Метод PickImageFromDirectory(directoryPath), показанный ниже, возвращает путь к наугад выбранному изображению. Данный метод вызывается из обработчика события мастер-страницы Page_Load, где возвращенное значение назначается свойству ImageUrl элемента управления Image.

Protected Sub Page_Load(ByVal sender As  Object, ByVal e As System.EventArgs) Handles Me.Load
   If Not Page.IsPostBack Then
      'Програмно выбираем случайное изображение из каталога ~/Images
      HeaderImage.ImageUrl = PickImageFromDirectory("~/Images/HeaderImages")
   End If
End Sub


'Возвращаем путь к выбранному изображению
Private Function PickImageFromDirectory(ByVal directoryPath As String) As String
   Dim dirInfo As New DirectoryInfo(Server.MapPath(directoryPath))
   Dim fileList() As FileInfo = dirInfo.GetFiles()
   Dim numberOfFiles As Integer = fileList.Length

   'Выбираем случайное изображение из списка
   Dim rnd As New Random
   Dim randomFileIndex As Integer = rnd.Next(numberOfFiles)

   Dim imageFileName As String = fileList(randomFileIndex).Name
   Dim fullImageFileName As String = Path.Combine(directoryPath, imageFileName)

   Return fullImageFileName
End Function

Код начинается с использования класса DirectoryInfo для получения списка всех файлов в указанном пути directoryPath (в данном случае ~/Images/HeaderImages). Для получения всех файлов из директории используется метод GetFiles(). (Вызов GetFiles() без каких-либо входных параметров возвращает все файлы в указанном каталоге, но вы можете вернуть только ряд файлов путем указания их в виде dirInfo.GetFiles("*.jpg").)

Метод GetFiles() возвращает массив объектов FileInfo. Чтобы выбрать произвольно  один из них, нам просто нужно выбрать наугад индекс из данного массива. Это достижимо путем создания экземпляра класса Random и вызова его метода Next(upperBound) для получения случайного числа, меньшего, чем upperBound. Теперь мы можем определить название выбранного файла для конкатенации его с имеющимся путем directoryPath.

Следующее изображение демонстрирует данный код в действии. Во время первого визита на страницу данное изображение было выбрано наугад.


А вот что было отображено после того, как я обновил страницу.