我的列表中有一些字段,其中一些字段为空,因为它们在基础表中没有记录。因此,当它与转发器控件绑定时,我得到NullReferenceException
。
那么,我应该怎么做,在绑定时处理null或者是否有任何其他方法,以便转发器或datalist或gridview将自动处理null值。
注意:我在我的aspx页面中使用<%# Eval("FieldName")%>
,而在数据库FieldName
中使用的是null
。
请指导我......
答案 0 :(得分:2)
自从第一次添加以来,我已经改变了这个答案 - 但它以更紧凑的形式包含了我原来答案的两个部分。这将处理谨慎的null和DBNull.Value。
<%# (Eval("FieldName") ?? DBNull.Value) != DBNull.Value ?
Eval("FieldName") : "" %>
由于Eval的双重调用,它有点效率低下 - 您可以通过向控件的基类添加辅助方法来解决这个问题。
我不建议修改类属性代码,除非该类纯粹仅用于显示,因为当值为null时,您将更改属性get的语义。
如果该字段实际上不应为null,那么您应该在类和数据库上设置阻止空值发生的门。
答案 1 :(得分:2)
<%# Eval("FieldName") ?? "" %>
答案 2 :(得分:1)
您可以向实体类添加一些计算属性。
像这样:
public string DisplayName
{
get
{
return this.Name ?? "N/A";
}
}
如果Name为null,这将返回Name或预定义的字符串。