2012-08-14 53 views
4

我已经抛出一个关于ASP和C#的问题,没有任何经验可以在我有限访问的服务器上以及在哪里看不到适当的错误日志。所以,请准备好自己的问题:)在C#中使用ASP Container.ItemIndex if语句

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

所以基本上要做到这一点:

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

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

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

+0

有什么错误? – jrummell 2012-08-14 13:33:47

+0

正如我所说我看不到错误消息,因为我只有有限的访问服务器。使调试代码相当有趣......也很可怕。 – 2012-08-14 13:38:39

+0

你可以在本地运行吗? – jrummell 2012-08-14 13:48:18

回答

7

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