使用转发器创建无序列表

use*_*531 2 asp.net webforms

嗨,我正在尝试制作一个带有两个阵列的中继器,但我不知道该怎么做,或者如果可能的话。我想要完成的是获取此 html:

 <ul>
           <asp:Repeater ID="Repeater1" runat="server">
                   <ItemTemplate>
                      <li><a href="#"><img src="images/gallery/thumbs/2.jpg" data-large="<%# Container.DataItem %>" alt="image02" data-description="A plaintful story from a sistering vale" /></a>
                      </li>
                      ...       
                   </ItemTemplate>
            </asp:Repeater>

 </ul>
Run Code Online (Sandbox Code Playgroud)

li 标签必须动态生成。更具体地说,我希望 imgs src 从第二个列表中获取元素,数据大从第一个列表中获取元素,数据描述从第一个或第二个元素中获取文件名.并为每次迭代生成li标签。这是后面的代码:

        string[] original = Directory.GetFiles(Server.MapPath(@"images\gallery\projects\original\"));
        string[] thumbs = Directory.GetFiles(Server.MapPath(@"images\gallery\projects\thumbs\"));

        List<string> originalL = new List<string>();

        foreach (string s in original)
        {
            originalL.Add("images/gallery/projects/original/" + Path.GetFileName(s));
        }
        Repeater1.DataSource = originalL;
        Repeater1.DataBind();
Run Code Online (Sandbox Code Playgroud)

在我使用控件制作标签之前,但使用此 html 我无法实现。我不知道如何将属性添加到内部 img 标签。如果有人可以帮助我制作控件或给我一些有关如何使转发器采用多个数组的指示,那将有很大帮助。如果可以用控件制作它会更好,但任何解决方案都是好的。提前致谢。

Ps 抱歉我昨晚真的很累的错误。

Zer*_*key 5

以下代码经过调试,完美运行!

代码隐藏:

public partial class WebForm1 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        List<Image> ImageList = new List<Image>();

        Image Image1 = new Image();
        Image1.ID = 1;
        Image1.Description = "From off a hill whose concave womb reworded";

        Image Image2 = new Image();
        Image2.ID = 2;
        Image2.Description = "A plaintful story from a sistering vale";

        ImageList.Add(Image1);
        ImageList.Add(Image2);

        Repeater1.DataSource = ImageList;
        Repeater1.DataBind();
    }
}

class Image
{
    public int ID { get; set; }
    public string Description { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

HTML:

<ul>
<asp:Repeater ID="Repeater1" runat="server">
    <ItemTemplate>
        <li><a href="#"><img src="images/gallery/thumbs/<%# DataBinder.Eval(Container.DataItem, "ID") %>.jpg" data-description="<%# DataBinder.Eval(Container.DataItem, "Description") %>" /></a></li>
    </ItemTemplate>
</asp:Repeater>
</ul>
Run Code Online (Sandbox Code Playgroud)

我不确定您将从何处检索描述,但您可以使用它从目录中获取 ID:

string[] images = Directory.GetFiles(Server.MapPath("~/Images/Gallery/Projects/Original"));
foreach (string s in images)
{
    Image NewImage = new Image();
    NewImage.ID = int.Parse(Path.GetFileNameWithoutExtension(s));
}
Run Code Online (Sandbox Code Playgroud)