4

我在没有任何经验的情况下遇到了关于 ASP 和 C# 的问题,并且在我访问受限且看不到正确错误日志的服务器上。因此,请为一个可能令人困惑的问题做好准备:)

我们在 HTML 模板中有一个循环(一个 ASP 中继器),模板中的一部分 HTML 应该只包含在循环的第一次迭代中。不幸的是,我不能只隐藏其他迭代的 html,我需要将其删除。

所以本质上想要这样做:

<% if (Container.ItemIndex == 0) { %>
    Lots of HTML here
<% } %>

问题是这会产生一个错误(而且我看不到日志,所以我不知道确切的原因......)。我知道 if 语句本身可以工作(设置 0 == 0 作为示例),并且我可以正常获取索引,只是不在这里。

所以问题是,如何做这样的事情?我可以访问 C# if 语句中的索引,还是可以使用中继器中内置的东西?

4

1 回答 1

7

我不会使用 If 语句,而是将“仅 0 索引”内容嵌套在 ASP.NET PlaceholderWeb 控件中,并且visible=true只为第一项设置。

正如@Amiram所说,您可以这样做:

<asp:Placeholder id="ph" runat="server" visible="<%# (bool)(Container.ItemIndex==0) %>">
    ...0 Index only content
</asp:Placeholder>

或者,visible="false"在事件中设置和更改此值ItemDataBound

if (e.Item.ItemIndex == 0){
   (placeholder)e.Item.FindControl("ph").visible = true;
}
于 2012-08-14T16:10:08.850 回答