转换:无法将“System.DBNull”类型的对象转换为“System.String”类型

时间:2016-03-30 12:55:36

标签: c# asp.net casting

我见过与我类似的问题,但我的方法略有不同,我对C#的熟悉程度不够。我在ASPX转换中使用以下代码:

  <%# !string.IsNullOrEmpty((string)Eval("XYZ")) ? "<tr>XYZ</tr>" : "" %>

当字段为空时出现错误,因为它无法转换为字符串。如何在不进行实际检查之前转换为字符串的情况下重新编写此值以检查空值?我正在使用的CMS可能存在限制,这可以解释为什么之前的开发人员没有使用其他方法,但我会测试您的建议。

1 个答案:

答案 0 :(得分:3)

使用

<%# !string.IsNullOrEmpty(Convert.ToString(Eval("XYZ"))) ? "<tr>XYZ</tr>" : "" %>

从数据库读取时,DBNull是一个特殊值,它告诉您已从数据库中的空值读取。 Convert类已经正确处理了DBNull值。 Convert.ToString(DBNull value)将返回一个空字符串。