Asp.net 当前上下文中不存在名称绑定
我喜欢执行条件绑定,因为Asp.net 当前上下文中不存在名称绑定,asp.net,Asp.net,我喜欢执行条件绑定,因为bind()值可能为null,在这种情况下,我喜欢将其默认为适当的值 当前上下文中不存在名称“Bind” 如何解决这个问题 <EditItemTemplate> <asp:DropDownList ID="ddlTimeZone" runat="server" DataSource='<%# TimeZoneInfo.GetZones().Select(s => s
bind()
值可能为null,在这种情况下,我喜欢将其默认为适当的值
当前上下文中不存在名称“Bind”
如何解决这个问题
<EditItemTemplate>
<asp:DropDownList ID="ddlTimeZone" runat="server" DataSource='<%# TimeZoneInfo.GetZones().Select(s => s.Id) %>'
SelectedValue='<%# Eval("TimeZone") != null ? Bind("TimeZone") : "" %>'>
<asp:ListItem Text="" Value=""/>
</asp:DropDownList>
</EditItemTemplate>
试试看
一个更优雅的解决方案(假设C#)是
您使用的是什么版本的Visual Studio和framework?谢谢Brian,如果我想将其绑定为EditTemplate中的版本,该怎么办?我不确定您的意思。您得到的错误消息是,Bind
不存在,这是准确的。它是Eval
,本质上是DataBinder.Eval(Container.DataItem,“your field”)
的缩写。我需要进行双向绑定,因此需要使用bind。我不是100%确定,但我觉得双向绑定可能会导致未定义的行为(例如,如果绑定到空字符串并更改值,会发生什么情况?)。最好的选择可能是在数据源中捕捉null,而不是在绑定表达式中捕捉null。
<%# Eval("TimeZone") != null ? Eval("TimeZone") : "" %>
<%# Eval("TimeZone") ?? "" %>