我已经抛出了一个关于ASP和C#的问题,没有任何经验,在我有限制访问的服务器上以及我看不到正确的错误日志。因此,请准备好一个可能令人困惑的问题:)
我们在HTML模板中有一个循环(ASP转发器),模板中HTML的一部分应该只包含在循环的第一次迭代中。不幸的是,我不能只为其他迭代隐藏html,我需要删除它。
所以基本上想要这样做:
<% if (Container.ItemIndex == 0) { %>
Lots of HTML here
<% } %>
问题是这会产生错误(我看不到日志,所以我不知道为什么......)。我知道if语句本身是有效的(设置0 == 0而不是作为一个例子),我可以正常得到索引,只是不在这里。
所以问题是,一个人怎么做这样的事情?我可以在C#if语句中访问索引,还是可以使用转发器内置的东西?
答案 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;
}