Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ASP Dot Net : How to repeat HTML parts with minor differences on a page?

Tags:

c#

asp.net

It's a really simple problem.

I've got HTML code like this :

<div>
 <img src="image1.jpg" alt="test1" />
</div>
<div>
 <img src="image2.jpg" alt="test2" />
</div>
<div>
 <img src="image3.jpg" alt="test3" />
</div>

etc...

The data is comming from a DB (image name, alt text).

In JAVA, I would do something like :

save the info in array in the back end.

For the presentation I would loop through it with JSTL :

<c:foeach items="${data}" var="${item}>
<div>
 <img src="${item.image}" alt="${item.alt}" />
</div>
</c:foreach>

What's the best practice in ASP.net I just don't want to create a string with HTML code in it in the "code behind", it's ugly IMO.

like image 434
tinky05 Avatar asked Feb 27 '23 08:02

tinky05


1 Answers

I'll take a stab at this without being able to see your code:

Check out the ASP:Repeater control. Between that and binding your data (with your variances) to it, it may do what you want.

Link 1 Link 2

<Edit:> Okay, now that I see your code, I can help you better. I'd definitely use a repeater for this. I would do it like this in the ASPX file (I may have some errors in this):

<ASP:Repeater id="MyRepeater" runat="server">
  <div>
    <img src="<%# Eval("Filename")>" alt="<$# Eval("AltText")>" />
  </div>
</ASP:Repeater>

Then in your C# you could have:

List<ObjectWithFilenameAndAltText> foo = GoGetTheseObjects();
MyRepeater.DataSource = foo;
MyRepeater.DataBind();

I may have some errors in this but I hope this gets you moving in the right direction. If you don't have a dedicated object for your images, you could simply use a Dictionary or List> and use "Key" and "Value" in your ASPX code.

like image 133
Jaxidian Avatar answered May 09 '23 18:05

Jaxidian