2011-03-07 51 views
3
<%# Eval("Description") == DBNull.Value ? "empty" : "notempty"%> 

总是显露出一个“NotEmpty”甚至有在该领域零的DB(varchar类型(的),NULL) ... 也试过检查空字符串:评估和演示支票的DBNull不工作

<%# Eval("Description") == "" ? "empty" : "notempty"%> 

它总是显示notempty ...这里有什么错?

回答

14

DBNull.Valuenull之间的差异。有可能该字段正在返回null

尝试

<%# Eval("Description") == null ? "empty" : "notempty"%> 

此外,如果字段值类型应该是字符串,你可以做线沿线的东西..

<%# (Eval("Description") as string) ?? "empty" %> 
+0

这个工作,你能不能解释我有什么不同?谢谢 !! – 2011-03-07 19:36:46

+2

@Stewie Griffin我认为最基本的解释方式是db值vs .net值。基本上'DBNull.Value'表示缺少数据库值,其中'null'表示数据为'null'。 – 2011-03-07 19:41:44

+0

@QuintinRobinson Null和DBNull之间有区别。请记住,大多数SQL引擎至少具有三态值系统; .Net基于2状态值系统。即使可空泛类型也比其他任何东西都更包装。 – GoldBishop 2017-05-31 12:52:17

4

您是否尝试过使用这种方法:

<%# Convert.IsDBNull(Eval("Description") ? "empty" : "notempty"%> 
+0

将此模式与'String.IsNullOrWhitespace()'结合起来,并且解决方案很有效 – GoldBishop 2017-05-31 12:54:40

4

它实际上并不存储DBNull在这个级别。你需要寻找null或空字符串,其中string.IsNullOrEmpty应该是足够的,并将捕获null和空的两个状态。

<%# string.IsNullOrEmpty(Eval("Description").ToString()) ? "empty" : "notempty"%> 
+0

如果description为null,则它将为空引用错误.ToString() – 2011-03-08 16:53:32

+0

'as string'would be working in the case – 2011-03-08 16:53:57