Eval проверка на DBNull не работает - PullRequest
4 голосов
/ 07 марта 2011
<%# Eval("Description") == DBNull.Value ? "empty" : "notempty"%>

всегда показывает 'notempty', даже если в этом поле в БД есть ноль (тип varchar (), ноль) ... Пробовал также проверять наличие пустой строки:

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

ивсегда отображается notempty ... что здесь не так ??

Ответы [ 3 ]

15 голосов
/ 07 марта 2011

Существует разница между DBNull.Value и null. Возможно, поле возвращает null.

Попробуйте

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

Кроме того, если тип значения поля должен быть строковым, вы можете сделать что-то вроде строки ..

<%# (Eval("Description") as string) ?? "empty" %>
4 голосов
/ 07 марта 2011

На самом деле DBNull не хранится на этом уровне. Вам нужно искать null или пустую строку, которой должно быть достаточно string.IsNullOrEmpty, и она захватит оба состояния null и пустое.

<%# string.IsNullOrEmpty(Eval("Description").ToString()) ? "empty" : "notempty"%>  
4 голосов
/ 07 марта 2011

Вы пробовали использовать этот метод:

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