<asp:Repeater>
是驾驶我疯..
我需要去做
<ItemTemplate>
<% if (Container.DataItem("property") == "test") {%>
I show this HTML
<% } else { %>
I show this other HTML
<% } %>
</ItemTemplate>
但我不能为我的生活找到任何方式来实现这一目标。 三元心不是什么好,因为HTML的量是相当大的,通过的DataBind事件设置标签不是很好要么,我得有HTML大块的代码隐藏。
肯定有办法做到这一点....
你可以尝试创造一种ViewModel类的,做你的代码背后的决策,然后很乐意与你的中继,简单地显示它正在被提供的数据。
这是为了从UI分离逻辑的一种方式。 那么你可以有一个愚蠢的用户界面,简单地显示数据,而无需什么/如何显示决定。
你可以使用服务器端的可视性:
<ItemTemplate>
<div runat="server" visible='<% (Container.DataItem("property") == "test") %>'>
I show this HTML
</div>
<div runat="server" visible='<% (Container.DataItem("property") != "test") %>'>
I show this other HTML
</div>
</ItemTemplate>
你可以与用户控件做到这一点:
<ItemTemplate>
<uc:Content1 runat='server' id='content1' visible='<%# Container.DataItem("property") == "test" %>'/>
<uc:Content2 runat='server' id='content2' visible='<%# Container.DataItem("property") != "test" %>'/>
</ItemTemplate>
貌似我这混了实际的数据绑定
你可以做到这一点,如下所示:
<asp:Repeater runat="server">
<ItemTemplate>
<% if (((Product)Container.DataItem).Enabled) { %>
buy it now!
<% } else {%>
come back later!
<% } %>
</ItemTemplate>
</asp:Repeater>
我有一个类似的问题和整个这个页面绊倒了。 感谢伟大的答案,Gavin和Keltex让我在正确的轨道上,但我有一点的一个棘手的时间得到这个我的网页上工作。 最终,我能得到它与这个布尔工作,所以我想分享给后人:
显示复选框,如果假
<asp:CheckBox ID="chk_FollowUp" Visible='<%# (DataBinder.Eval(Container.DataItem, "FollowUp").ToString() == "False") %>' runat="server" />
放映标志IMG如果属实
<asp:Image ID="img_FollowUp" AlternateText="Flagged" ImageUrl="Images/flag.gif" runat="server"
Visible='<%# DataBinder.Eval(Container.DataItem, "FollowUp") %>' Height="30" Width="30" />
首先,你必须在你的Page.cs文件Defind计数变量
<%if (Count == 0)
{
%>
<div style="background-color:#cfe9ed" class="wid_100 left special_text"><%# Eval("CompanyName") %></div>
<%}
else if (Count == TotalCount - 1)
{
%>
<div style="background-color:#f2f1aa" class="wid_100 left special_text"><%# Eval("CompanyName") %></div>
<%}
else
{
%>
<div class="wid_100 left special_text"><%# Eval("CompanyName") %></div><% } %>
<%Count++; %>