我想在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.
NOTE2:我知道我可以用这个:
<%#DataBinder.Eval(Container.DataItem,"MyProperty").Equals("SomeValue")?"<!--":""%>
但我一直在寻找一种更清洁的方式.
有没有办法在Repeater中使用内联代码测试Container.DataItem?
解决方法
我会这样做的.您将“visibility”函数绑定到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>