【发布时间】:2019-10-07 17:51:04
【问题描述】:
有没有可能跳过asp:repeater 中的项目?我有 <ul> 和 <li>s 我需要 ul 只重复一次。因为它有 id 并且 id 必须是唯一的。
这里我需要跳过重复<ul id="lightgallery"> 然后继续重复<li> 标签。
<asp:Repeater ID="rptBlogs" runat="server">
<ItemTemplate>
<div class="blog-post">
<div style="display:none;" id="video<%# Eval("ID") %>">
<video class="lg-video-object lg-html5" controls preload="none">
<source src="<%# !Eval("ArticleTypeValue").ParseString()%>" type="video/mp4">
Your browser does not support HTML5 video.
</video>
</div>
<div class="post-left-img">
<ul id="lightgallery"> //this needs to be skipped
<li class="video" style="position: relative;" data-poster="/<%# Eval("ThumbImage").ParseString() %>" data-sub-html="<%# Eval("Description") %>" data-html="#video<%# Eval("ID") %>" >
<a href="javascript:void(0)">
<img class="img-responsive" src="/<%# Eval("ThumbImage").ParseString() %>" />
<div class="demo-gallery-poster">
<img src="/assets/images/play-button.png">
</div>
</a>
</li>
</ul>
</div>
</ItemTemplate>
</asp:Repeater>
我知道结构应该在哪里:
<ul>
<asp:repeater>
...
</asp:repeter>
</ul>
但由于 HTML 结构,这无法做到。
已解决,但仍对更好的想法持开放态度。请参阅下面的解决方案。
【问题讨论】:
-
如果你不想,你不必渲染任何标记。您可以在 ItemTemplate 中添加条件逻辑来检查项目以确定是否应该呈现它。您可以查看this answer 以了解如何在您的 Web 表单标记中执行 if 语句。
-
@mason 我想过,但如果我想让它只显示一次,情况会怎样。
-
听起来你的 UL 根本不应该在中继器中。
-
我知道理想的是
-
您可以添加一个变量来跟踪它是否已经被添加。但这看起来您只是在避免问题,而不是适当地花时间来组织您的标记。
标签: asp.net asprepeater lightgallery