在ASP.net Bind()调用上测试null,inline

Car*_*arl 7 asp.net data-binding null bind drop-down-menu

我有一些我开始管理的代码,并且由于数据库中缺少一些数据而导致它开始失败.这种情况可能在将来发生,所以我想优雅地处理前端的空值.

这是当前的代码:

<asp:DropDownList ID="ddlContact" runat="server"
  SelectedIndex='<%# Bind("contactInfo") == null  ? "" : Bind("contactInfo") %>'>
Run Code Online (Sandbox Code Playgroud)

它似乎没有任何影响,页面仍然抛出NullReferenceException.由于双向数据绑定要求,它需要是一个Bind(),所以我不能使用Eval().有任何想法吗?

我试过使用null-coallescing运算符"??" 但这给了我一个编译错误,说明当前上下文中不存在Bind().这可能看起来像这样:

<asp:DropDownList ID="ddlContact" runat="server"
  SelectedIndex='<%# Bind("contactInfo") ?? string.Empty %>'>
Run Code Online (Sandbox Code Playgroud)

Len*_*rri 2

检查这个:

绑定空值

这应该会给你更多的想法:

如何处理 DataBinder.Eval() 中的空值

使用数据源控件处理空数据库值

当 AppendDataBoundItems 属性设置为 true 时,DropDownList 控件将填充静态项和从数据源生成的数据。添加到 DropDownList 控件的静态列表项的 Value 属性设置为空字符串。这样,包含空值的数据项就会绑定到静态列表项。