C# 转换:无法强制转换类型为';System.DBNull';输入';System.String';

C# 转换:无法强制转换类型为';System.DBNull';输入';System.String';,c#,asp.net,casting,C#,Asp.net,Casting,我见过类似的问题,但我的方法略有不同,我对C#不够熟悉,无法将其组合起来。我在ASPX转换中使用以下代码: <%# !string.IsNullOrEmpty((string)Eval("XYZ")) ? "<tr>XYZ</tr>" : "" %> 该字段为空时会出现错误,因为它无法转换为字符串。在实际检查之前,我如何重新写入此文件以检查空值,而不转换为字符串?我正在使用的CMS中可能有一个限制,这可以解释为什么以前的开发人员没有使用另一种方法,但

我见过类似的问题,但我的方法略有不同,我对C#不够熟悉,无法将其组合起来。我在ASPX转换中使用以下代码:

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

该字段为空时会出现错误,因为它无法转换为字符串。在实际检查之前,我如何重新写入此文件以检查空值,而不转换为字符串?我正在使用的CMS中可能有一个限制,这可以解释为什么以前的开发人员没有使用另一种方法,但我将测试您的建议。

使用

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


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

(string)Eval(“XYZ”)
?那是什么?Eval(“XYZ”)==System.DBNull | | string.IsNullOrEmpty((string)Eval(“XYZ”))?“”:“XYZ”XYZ是字段名,(string)Eval是从数据库获取字段值并尝试将其转换为字符串的函数。这就是当字段为空时错误的来源。不要强制转换它,然后…。@met.lord然后调用
IsNullOrEmpty
将失败。这很有效,非常感谢!CMS IntelliSense无法识别Convert.ToString类和方法,但它似乎按预期工作。顺便说一句,我还没有达到+1的水平,所以任何人看了这篇文章都请看。