在C#if语句中使用ASP Container.ItemIndex

时间:2012-08-14 13:32:58

标签: c# asp.net repeater

我已经抛出了一个关于ASP和C#的问题,没有任何经验,在我有限制访问的服务器上以及我看不到正确的错误日志。因此,请准备好一个可能令人困惑的问题:)

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

所以基本上想要这样做:

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

问题是这会产生错误(我看不到日志,所以我不知道为什么......)。我知道if语句本身是有效的(设置0 == 0而不是作为一个例子),我可以正常得到索引,只是不在这里。

所以问题是,一个人怎么做这样的事情?我可以在C#if语句中访问索引,还是可以使用转发器内置的东西?

1 个答案:

答案 0 :(得分:7)

我不会使用If语句,而是将“仅0索引”内容嵌套在ASP.NET Placeholder Web控件中,并仅为第一项设置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;
}