7

ASP.Net 2.0 で次のようなことをしたいと思います。

 <asp:Repeater id="myRepeater" runat="server">
      <ItemTemplate>
           <% if (DataBinder.Eval(Container.DataItem, "MyProperty").Equals("SomeValue")) { %>
                <%#DataBinder.Eval(Container.DataItem, "MyProperty")%>
           <% } %>
      </ItemTemplate>
 </asp:Repeater>

しかし、このように DataBinder.Eval(Container.DataItem, "MyProperty") をテストすることはできません。

注: ソース コードにはアクセスできません。aspx インラインのみを変更できます。

注2:これを使用できることはわかっています:

 <%#DataBinder.Eval(Container.DataItem, "MyProperty").Equals("SomeValue")?"<!--":""%>

しかし、私はよりクリーンな方法を探していました。

リピーター内のインライン コードで Container.DataItem をテストする方法はありますか?

4

4 に答える 4

5

私はこれをします。「可視性」関数を asp:literal コントロールの visible プロパティにバインドします。

<asp:Repeater id="myRepeater" runat="server">
    <ItemTemplate>
        <asp:literal runat='server' id='mycontrol' 
          visible='<%# DataBinder.Eval(Container.DataItem, "MyProperty").Equals("SomeValue") %>'>
          <%# DataBinder.Eval(Container.DataItem, "MyProperty") %>
        </asp:literal>
     </ItemTemplate>
 </asp:Repeater>
于 2009-04-07T13:37:12.480 に答える
1

「else-case」はどうですか?

見苦しく、実際には読めません。

<asp:Repeater id="myRepeater" runat="server">
    <ItemTemplate>
        <%--(if true part)--%>
        <asp:literal runat='server'
          visible='<%# DataBinder.Eval(Container.DataItem,"OrderCount") > 0%>'> 
            <%# DataBinder.Eval(Container.DataItem, "OrderCount") %>
        </asp:literal>
        <%--(else part)--%>
        <asp:literal runat='server'
          visible='<%# DataBinder.Eval(Container.DataItem,"OrderCount") ==0%>'>
            <p>yet no orders</p>
        </asp:literal>
     </ItemTemplate>
 </asp:Repeater>
于 2011-07-06T20:36:33.543 に答える