Il modo migliore per generare un elenco di immagini
-
26-09-2019 - |
Domanda
Ho un elenco che ha informazioni sulle immagini che voglio visualizzare. Ogni immagine ha 6 voci contenenti informazioni al riguardo e ci sono 20 immagini. 6 x 20 voci in totale.
listImg[0] = image_name
listImg[1] = image_url
listImg[2] = other_info
listImg[3] = other_info
listImg[4] = other_info
listImg[5] = other_info
Ora quello che voglio fare è visualizzare queste immagini una accanto all'altra, in una linea orizzontale, con il nome dell'immagine nella parte inferiore di ogni immagine (sovrapposizione, dovrebbe essere fatto solo con un tag DIV e un po 'di stile) . Il fatto è che non riesco a capire il modo migliore per generare questo elenco di immagini.
Qualche suggerimento con frammenti di codice?
Grazie m
Soluzione
Forse crea una classe per organizzare meglio i tuoi dati sull'immagine e poi leggere da essa quando si ottiene il markup, ad esempio
class MyImage
{
public string Name {get; set;}
public string Url {get; set;}
public List<string> OtherInfo {get; set;}
}
...
public List<MyImage> MyImages = new List<MyImage>();
...
var img = new MyImage {"Name","http://www.example.com"});
img.OtherInfo.Add("Info1");
img.OtherInfo.Add("Info2");
img.OtherInfo.Add("Info3");
string html = "";
foreach(var image in MyImages)
{
// Access image data and write it out. etc.
html+= String.Format("<div>{1}{2}</div>",image.Name, image.Url);
foreach(var info in image.OtherInfo)
{
html+= "<div>" + info + "</div";
}
}
// Write out your code to a literal, placeholder, etc.
MyLiteralControl.Text = html;
È inoltre possibile ottenere la scrittura dei dati creando prima i tuoi dati sul backend, e quindi semplicemente loop attraverso l'elenco nel markup effettivo prima che la pagina venga resa, ad esempio
<html><head></head><body>
<div>My Images</div>
<% foreach(var image in MyImages) { %>
<div><%=image.Name%></div> <!-- format your markup here -->
<% } %>
</body>
</html>
Organizzare i tuoi dati al di fuori di un semplice array midimensionale si rivelerà molto più utile per mantenere e debug della tua architettura. Puoi anche creare oggetti aziendali da utilizzare attraverso il tuo sviluppo, quindi il tuo codice è molto più utile e passi meno tempo a riscrivere oggetti helper se si presenta la necessità per realizzare la stessa variante della tua logica.
Altri suggerimenti
Ecco un codice pseudo approssimativo per cercare di spiegare:
class ImageInfo
{
string image_name;
string image_url;
//leavign out other_info since you don't say you are going to use it
}
List<ImageInfo> myImages = new List<ImageInfo>();
//load list
//Bind to listView
lv_Images.DataSource = myImages;
lv_Images.DataBind();
PSEUDO CODICE PER LOTTURA ELENCO
<listView>
<itemTemplate>
<div> <asp:Label text='<%# Bind("image_name") %>' /><br/><img src='<%# Bind("image_url") %>' />
.
.
.
.
Fammi sapere se qualcosa è confuso ...