我正在使用转发器打印博客的页面选择器/分页链接。在博客的主视图中,数字1不应该有一个链接(因为用户已经在主页面上,因此是初始的结果集)。如果用户单击页面链接,则会添加?page=#
的查询字符串,其中#
是页码。加载该页面时,该编号现在应该是没有链接的编号。这很有帮助,因此人们可以看到他们所在的页面。
为了给你一个视觉,这里是批准的设计:
这是我的中继器标记:
<asp:Repeater ID="rptBlogPagination" runat="server">
<ItemTemplate>
<li>
<a href="?page=<%# Container.DataItem %>">
<%# Container.DataItem %>
</a>
</li>
</ItemTemplate>
</asp:Repeater>
在标记或代码隐藏中,如何首先检查当前请求/查询字符串,然后有条件地在数字周围包裹锚点?看起来三元语句/ null合并很受欢迎,但这是最佳实践吗?它看起来甚至不可能,但无论如何我试了一下,真的无法让它发挥作用......
我还尝试将<li>
ID设为runat="server"
,但后面的代码无法识别它。我认为<ItemTemplate>
内的元素无法访问。
答案 0 :(得分:0)
您将锚定Repeater.ItemDataBound
事件。您可以找到其他信息here。
protected void Repeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
// Your conditional logic would go here.
}
}
有条件的一个例子是在DataItem
上实例化。所以它看起来像:
((Example)e.Item.DataItem).PropertyInPoco == "Some Value"
希望这能为你澄清。
答案 1 :(得分:0)
所提供的答案都没有用,所以我最终保留了所有页码数,但是通过将颜色设置为黑色而不是橙色,将css类添加到用户当前正在查看的页面。