我有一个ASP.NET页面,其中包含转发器控制,其中包含另一个转发器控件:
<asp:Repeater ID="GroupList" runat="server">
<ItemTemplate>
<div class="groupSepatator">
</div>
<asp:Repeater ID="ActionList" runat="server">
<ItemTemplate>
<div class="actionData">
<asp:PlaceHolder runat="server" Visible='<%# Eval("ActionDate").ToString() == "01.01.1980 0:00:00" %>'>
<time class="actionDate" datetime="<%# Formatter.FormatDate(Eval("ActionDate").ToString(), 11) %>">
<%# Formatter.FormatDate(Eval("ActionDate").ToString(), 8) + Eval("StrEndDate") %>
</time>
</asp:PlaceHolder>
<asp:PlaceHolder runat="server" Visible='<%# Eval("ActionDate").ToString() != "01.01.1980 0:00:00" %>'>
<time class="actionDate" itemprop="startDate" datetime="<%# Formatter.FormatDate(Eval("ActionDate").ToString(), 11) %>">
<%# Formatter.FormatDate(Eval("ActionDate").ToString(), 8) + Eval("StrEndDate") %>
</time>
</asp:PlaceHolder>
</div>
</ItemTemplate>
</asp:Repeater>
</ItemTemplate>
</asp:Repeater>
如您所见,有2个占位符构成一个逻辑块。我需要添加新的逻辑块,在内部中继器内的第一个下面有两个类似的占位符。应该存在依赖于查询字符串参数的条件 - ActionTopTypeID。如果存在ActionTopTypeID,则应读取具有2个占位符的第一个块(可见),如果不存在ActionTopTypeID,则应读取具有2个占位符的第二个块(可见)。
代码中也存在一个条件:
if (actionTopTypeID == -1)
{
items = Method1();
}
else
{
items = Method2();
}
如何在标记中设置条件?
更新代码:
<div class="actionData" Visible='<%# !string.IsNullOrEmpty(Request.QueryString["ActionTopTypeID"]) %>'>
<asp:PlaceHolder runat="server" Visible='<%# Eval("ActionDate").ToString() == "01.01.1980 0:00:00" %>'>
<time class="actionDate" datetime="<%# Formatter.FormatDate(Eval("ActionDate").ToString(), 11) %>">
<%# Formatter.FormatDate(Eval("ActionDate").ToString(), 8) + Eval("StrEndDate") %>
</time>
</asp:PlaceHolder>
<asp:PlaceHolder runat="server" Visible='<%# Eval("ActionDate").ToString() != "01.01.1980 0:00:00" %>'>
<time class="actionDate" itemprop="startDate" datetime="<%# Formatter.FormatDate(Eval("ActionDate").ToString(), 11) %>">
<%# Formatter.FormatDate(Eval("ActionDate").ToString(), 8) + Eval("StrEndDate") %>
</time>
</asp:PlaceHolder>
<a class="actionTitle" href="Details.aspx?ActionID=<%# Eval("ActionID") %>" itemprop="url"><div itemprop="name"><%# Eval("NameForH1") %></div></a>
<a class="actionExtraData" href="Actions.aspx?ActionTypeID=<%# Eval("ActionTypeID") %>"><%# Eval("ActionType") %></a>
<a class="actionExtraData" href="Actions.aspx?ActionPlaceID=<%# Eval("ActionPlaceID") %>" title="<%# Eval("Coordinates") %>" itemprop="url">
<span itemprop="location"><%# Eval("PlaceName") %></span>
</a>
<a class="linkBuyTicket" href="Order.aspx?ActionID=<%# Eval("ActionID") %>&ActionDate=<%# HttpUtility.UrlEncode(Formatter.FormatDate(Eval("ActionDate").ToString(), 6)) %>">
<div class="buttonCommonSmall">Заказать билеты</div>
</a>
</div>
<div class="actionData" Visible='<%# string.IsNullOrEmpty(Request.QueryString["ActionTopTypeID"]) %>'>
Hello
</div>
答案 0 :(得分:0)
您已经将类似的逻辑应用于占位符的可见性。现在你可以将它们应用于包装它们的div:
<div class="actionData" runat="server"
Visible='<%# !string.IsNullOrEmpty(Request.QueryString["ActionTopTypeID"]) %>'>
</div>
<div class="actionData" runat="server"
Visible='<%# string.IsNullOrEmpty(Request.QueryString["ActionTopTypeID"]) %>'>
</div>
请注意,可见性条件是独占的,并且确保一次只显示一个div。
为了使它更清洁,你总是可以在代码后面引入一个包含逻辑的非私有方法并返回boolean,然后像这样调用它:
<div class="actionData" runat="server"
Visible='<%# HasActionTopTypeID() %>'>
</div>
<div class="actionData" runat="server"
Visible='<%# !HasActionTopTypeID() %>'>
</div>
答案 1 :(得分:0)
将您的代码部分包装在ASP:Panel控件中,并为现有代码添加其他逻辑;
if (actionTopTypeID == -1)
{
items = Method1();
pnlItems1.Visible = true;
}
else
{
items = Method2();
pnlItems2.Visible = true;
}