質問
表示したい画像に関する情報があるリストがあります。各画像には、それに関する情報を含む6つのエントリがあり、20個の画像があります。合計6 x 20エントリ。
listImg[0] = image_name
listImg[1] = image_url
listImg[2] = other_info
listImg[3] = other_info
listImg[4] = other_info
listImg[5] = other_info
ここで私がやりたいのは、これらの画像を隣に隣接して表示することです。各画像の下部に画像の名前が付いています(重複して、Divタグとスタイルを使用して実行する必要があります) 。問題は、この画像リストを生成する最良の方法を理解できないということです。
コードスニペットに関する提案はありますか?
ありがとうm
解決
おそらく、画像データをより適切に整理するためのクラスを作成し、マークアップを出力するときにそれから読み取ります。
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;
また、最初にバックエンドでデータを作成することでデータを書き出すこともできます。次に、ページがレンダリングされる前に実際のマークアップでリストをループするだけです。
<html><head></head><body>
<div>My Images</div>
<% foreach(var image in MyImages) { %>
<div><%=image.Name%></div> <!-- format your markup here -->
<% } %>
</body>
</html>
単純な1次元配列の外でデータを整理することは、アーキテクチャの維持とデバッグにおいて、はるかに有用であることが証明されます。開発全体で使用するビジネスオブジェクトを作成することもできます。そのため、コードの方がはるかに便利で、ロジックの同じまたはバリアントを達成する必要がある場合はヘルパーオブジェクトの書き換えに費やす時間が少なくなります。
他のヒント
説明しようとする大まかな擬似コードを次に示します。
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();
ListViewの擬似コード
<listView>
<itemTemplate>
<div> <asp:Label text='<%# Bind("image_name") %>' /><br/><img src='<%# Bind("image_url") %>' />
.
.
.
.
何かが混乱しているかどうか教えてください...
所属していません StackOverflow