如何为Repeater生成的项提供唯一的元素id

本文关键字:唯一 元素 id Repeater | 更新日期: 2023-09-27 18:12:31

我在ASP.Net中使用Repeater。我正在访问数据库中的内容。html元素的每个id或类都是相同的。这是一个新的标题。有一个阅读按钮。

我想在新页面中打开一个标题的完整描述。
我有问题在分配唯一的id,从中我知道哪个标题被点击。

这是该部分的代码:

<div class="content">
        <table>
            <tr>
                <td class="contl">
                    <div>
                        <asp:Repeater ID="RepCountry" runat="server"    OnItemCommand="RepCountry_ItemCommand">
                            <ItemTemplate>
                                <div class="contentbox">
                                    <div class="postheading">
                                        <%#Eval("title")%>
                                    </div>
                                    <table>
                                    <tr><td> <div class="postimage">
                                        <img src="Admin/images/<%# Eval("img")%>" alt="" height="50%" width="100%" />
                                    </div></td>
                                    <td><div class="discp">
                                        <div class="dpost">
                                            <p style="font-family: Times New Roman">
                                                <%#Eval("p_date")%></p>
                                        </div>
                                        <div class="discp_c">
                                            <p>
                                                <%# Eval("descr").ToString().Substring(0,200).ToString()%></p>
                                            <p style="color: Maroon">
                                                <a id="A1"+ href="Readmore.aspx?oid=" runat="server" onclick="changeid(this.id)">Read More.</a></p>
                                        </div>
                                        <div class="social">
                                            <a href="">
                                                <img src="images/t.png" alt="twtter" /></a> <a href="">
                                                    <img src="images/f.png" alt="facebook" /></a> <a href="">
                                                        <img src="images/g.png" alt="gmail" /></a> <a href="">
                                                            <img src="images/in.png" alt="linkedin" /></a>
                                        </div>
                                    </div></td></tr>
                                    </table>

                                </div>
                            </ItemTemplate>
                        </asp:Repeater>

如何为Repeater生成的项提供唯一的元素id

我看到你已经使用Eval在你的项目中插入了一个Description:

<div class="discp_c">
    <p>
        <%# Eval("descr").ToString().Substring(0,200).ToString()%></p>
    <p style="color: Maroon">
...                                    

如果我读的代码好,你至少读title, descr, img的数据库查询?

如果是,那么确保查询也返回文章的ID(主键),并使用Eval在链接中插入该ID。因此,如果数据库中文章的主键命名为articleID,则从

更改数据库查询
SELECT xxx as title, yyy as descr, zzz as img ....

SELECT id as articleID, xxx as title, yyy as descr, zzz as img ....

那么你可以使用数据库提供的ID来创建一个到文章的完整链接:

<a runat='server' ....
   href='Readmore.aspx?oid=<%# Eval("articleID").ToString()%>'
   ....>
   ...</a>

,因此Readmore.aspx页面将确切地知道应该打开哪篇文章。它将直接作为oid查询参数出现,不需要做额外的工作。

如果您确实需要它,您可以使用相同的技巧来生成该标记的HTML ID:

<a runat='server' ....
   id='ID_<%# Eval("articleID").ToString()%>'
   href='Readmore.aspx?oid=........'
   ....>
   ...</a>

,这样,<a>标签将具有像ID_32131, ID_4532455, ID_1231455一样的id,并且只要数据库查询返回唯一的文章,id将是唯一的。