asp.net - 使用转发器创建无序列表

标签 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>

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();

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

P.s 对不起,昨晚我真的很累。

最佳答案

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

代码隐藏:

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; }
}

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>

我不确定您要从哪里检索描述,但您可以使用它从目录中获取 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));
}

关于asp.net - 使用转发器创建无序列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19579271/

相关文章:

css - ASP.Net 文本框和输入按钮未使用 CSS 在 FF 中对齐

javascript - 在 IE10 中选择的表单名称无效吗?

jquery - 最佳实践 : How to configure jQuery UI with ASP. NET

asp.net - ASP.NET 客户端将单个字符串值(在代码中定义)传递给服务器的绝对最简单的方法是什么?

c# - 类型定义存在于两个库中

asp.net - 在 PreRender 上向页面添加控件

c# - 将文本框中的文本插入数据库

c# - asp.net web 表单中站点地图权限中的用户权限

c# - 如何访问 ItemTemplate 中存在的 ServerControl?

asp.net - 一个页面只能有一个服务器端表单标签..但我需要 2 个