Home / Programmazione / C# - Asp.NET / Listare le immagini in Asp.NET
Mattepuffo

Listare le immagini in Asp.NET

Listare le immagini in Asp.NET

L'altra settimana ho deciso di riprendere un pò in mano l'Asp.NET e il C#, ma sono talmente abituato al PHP che anche per una cosa così banale ci ho messo una vita.........

Quello che volevo fare era una semplice pagina che mi listasse e visualizzasse tutte le immagini dentro una directory.

Quindi nella root del sito ho la pagina Default.aspx e la cartella Images con dentro varie immagini (in questo caso png).

Ovviamente ci stanno vari modi per farlo.

Prima di tutto vediamo il code-behind della pagina:

namespace Listare_immagini
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string directory = "~/Images/";
string[] images = System.IO.Directory.GetFiles(Server.MapPath(directory), "*.png");
ImgLista.DataSource = images;
ImgLista.DataBind();
}
}
}

Abbiamo una string che rappresenta la directory dove ci sono le immagini.

 

Poi abbiamo un array di string che rappresentano i vari files.

Qui usiamo il metodo GetFiles, che restituisce appunto un array con i nomei di tutti i files.

Al metodo passiamo MapPath, che restituisce il percorso virtuale su server web e l'estensione dei files come search pattern (però non è un parametro obbligatorio).

Infine facciamo il bind del controllo server Repeater.

Nella pagina avremo una cosa del genere:

<asp:Repeater ID="ImgLista" runat="server">
<HeaderTemplate>
<ul>
</HeaderTemplate>
<ItemTemplate>
<li>
<img src="<%# (Container.DataItem as string).Substring(Server.MapPath("./").Length).Replace("\\", "/") %>" alt="" />
</li>
</ItemTemplate>
<FooterTemplate>
</ul>
</FooterTemplate>
</asp:Repeater>

Repeater è un controllo server che funge da contenitore.

La particolarità sta in questa riga:

<img src="<%# (Container.DataItem as string).Substring(Server.MapPath("./").Length).Replace("\\", "/") %>" alt="" />

In pratica si dice cosa deve essere visualizzato nella proprietà ItemTemplate del controllo Repeater.

Niente di complicato in sostanza.

Certo che se venite dalla semplicità del PHP............