DBNull的Eval检查不起作用

Ste*_*fin 4 c# asp.net eval

<%# Eval("Description") == DBNull.Value ? "empty" : "notempty"%>
Run Code Online (Sandbox Code Playgroud)

即使在DB中的该字段中存在null(varchar()的类型,null),也显示始终为'notempty'...尝试检查空字符串:

<%# Eval("Description") == "" ? "empty" : "notempty"%>
Run Code Online (Sandbox Code Playgroud)

它总是显示出来......这里有什么不对?

Qui*_*son 15

DBNull.Value和之间有区别null.该领域有可能返回null.

尝试

<%# Eval("Description") == null ? "empty" : "notempty"%>
Run Code Online (Sandbox Code Playgroud)

此外,如果字段值类型应该是字符串,你可以做一些沿着...的行.

<%# (Eval("Description") as string) ?? "empty" %>
Run Code Online (Sandbox Code Playgroud)

  • @Stewie Griffin我认为解释它的最基本方法是db值vs .net值.基本上``DBNull.Value`表示缺少数据库值,其中`null`表示数据为'null`. (2认同)

Abe*_*ler 5

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

<%# Convert.IsDBNull(Eval("Description") ? "empty" : "notempty"%>
Run Code Online (Sandbox Code Playgroud)