Asp.net 列表视图中的条件显示

Asp.net 列表视图中的条件显示,asp.net,listview,Asp.net,Listview,我有以下ListView代码: <asp:ListView ID="lvOrders" runat="server"> <LayoutTemplate> <ul id="orderList"> <asp:PlaceHolder ID="itemPlaceholder" runat="server"></asp:PlaceHolder> </ul>

我有以下ListView代码:

<asp:ListView ID="lvOrders" runat="server">
    <LayoutTemplate>    
        <ul id="orderList">
            <asp:PlaceHolder ID="itemPlaceholder" runat="server"></asp:PlaceHolder>
        </ul>
    </LayoutTemplate>

    <ItemTemplate>
        <li>           
            <% if (Mode == AdminSingle) { %>                    
                <%# Eval("Offertype")%>
            <% } %>
        <%# Eval("Something")%>
        </li>
    </ItemTemplate>
</asp:ListView>

  • 现在,我的问题是Eval(“Offertype”)在任何情况下都会被评估。但是sql查询对于这一部分来说相当繁重,如果我真的需要的话,我只想运行查询的这一部分。有没有干净的办法

    我知道我可以做到:

    <%# GetStatusInfo(Container.DataItem)%>
    
    
    

    但是我将显示逻辑输入到代码中……

    对于我来说,一个比
    Eval(“某物”)
    更复杂的逻辑应该在代码后面进行评估。它使标记更具可读性。我想你的
    是这里最好的选择。这只是一个简单的例子。实际上,这里有一些更复杂的显示逻辑。你真的会把它放在代码背后吗。例如,
  • 不是比标记中的许多代码块更优雅吗?另外,如果您定义了一个方法,那么它背后的代码可以在控件/页面中重用(当然,如果必要);想象一下,如果没有它,你必须在控件/页面上复制并粘贴代码块。在这种情况下,我不会说在页面中使用GetStatusInfo(Container.DataItem)将显示逻辑放在页面中,因为实际逻辑在GetStatusInfo函数中,你只能从页面调用它。至于我,应该在代码隐藏中评估比“评估”(“某物”)更复杂的逻辑。它使标记更具可读性。我想你的
    是这里最好的选择。这只是一个简单的例子。实际上,这里有一些更复杂的显示逻辑。你真的会把它放在代码背后吗。例如,
  • 不是比标记中的许多代码块更优雅吗?另外,如果您定义了一个方法,那么它背后的代码可以在控件/页面中重用(当然,如果必要);想象一下,如果没有它,你必须在控件/页面上复制并粘贴代码块。在这种情况下,我不会说在页面中使用GetStatusInfo(Container.DataItem)将显示逻辑放在页面中,因为实际逻辑在GetStatusInfo函数中,你只能从页面调用它。