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") ?? "" %>