我可以否定使用"Eval"的属性中的值吗?

Kev*_*Dog 13 asp.net asp.net-3.5

我想将按钮的启用状态设置为值的否定.

所以给出这段代码:

<asp:CheckBox ID="DefaultChecked" 
              Checked='<%# Bind("IsDefaultMessage") %>' 
              Enabled="false" 
              runat="server" />

<asp:LinkButton ID="MakeDefaultButton" 
                runat="server" 
                CommandName="MakeDefault' 
                CommandArgument='<%# Bind("ResidentialInfoID") %>' 
                Text="Make Default" />
Run Code Online (Sandbox Code Playgroud)

我怎样才能让LinkBut​​ton的Enabled属性false,如果IsDefaultMessage == true

Hel*_*mik 22

使用Eval而不是Bind.绑定用于双向绑定,即用于需要能够将数据保存回数据源的情况.

当您使用Bind时,编译的页面实际上将生成使用Eval设置值的代码,以及一些用于读取保存值的代码.因为Bind被生成的代码替换,所以你不能在Bind中使用任何额外的逻辑.

<asp:CheckBox ID="DefaultChecked" Checked='<%# !(bool)Eval("IsDefaultMessage") %>' Enabled="false" runat="server" />
<asp:LinkButton ID="MakeDefaultButton" runat="server" CommandName="MakeDefault' CommandArgument='<%#Bind("ResidentialInfoID") %>' Text="Make Default"/>
Run Code Online (Sandbox Code Playgroud)


Jon*_*ams 5

如果你可以使用Eval,它只是Control该类的一种方法.它的特殊之处在于它需要位于数据绑定块的上下文中<%# ... %>.除此之外,您基本上可以将块视为正则<%= %>表达式块:

<%# !(bool)Eval("IsDefaultMessage") %>
Run Code Online (Sandbox Code Playgroud)

如果你想仍然绑定它(Eval不是往返),那么你需要在数据绑定期间来回否定它.如果你可以重新控制控件,你可能不需要这样做.例如,如果一个复选框,而不是将"不是默认消息"标记给用户并且来回否定它,而不是标记"是默认消息".举例说明,但你明白了.