2011-03-07 47 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