C# 为什么这对我不起作用?它总是返回真的

C# 为什么这对我不起作用?它总是返回真的,c#,asp.net,eval,C#,Asp.net,Eval,我一直在绞尽脑汁,想弄明白为什么这对别人有效,但对我无效 我有一些数据,在Hours2列中,明显有空的单元格,还有这样的小时 '9:00 a.m. - 6:00 p.m.' NULL NULL '9:00 a.m. - 6:00 p.m.' '9:00 a.m. - 5:00 p.m.' NULL NULL NULL 然而,我不知道如何做似乎应该是一个简单的带有内联代码的if语句。我已经用过了 以获取值并显示良好 在第一种情况下,如果Hours2为空或不为空,我希望显示一位或另一位文本。(这是

我一直在绞尽脑汁,想弄明白为什么这对别人有效,但对我无效

我有一些数据,在Hours2列中,明显有空的单元格,还有这样的小时

'9:00 a.m. - 6:00 p.m.'
NULL
NULL
'9:00 a.m. - 6:00 p.m.'
'9:00 a.m. - 5:00 p.m.'
NULL
NULL
NULL
然而,我不知道如何做似乎应该是一个简单的带有内联代码的if语句。我已经用过了

以获取值并显示良好

在第一种情况下,如果Hours2为空或不为空,我希望显示一位或另一位文本。(这是我的小时数1数据的标签文本,如果有小时数2,则星期五有不同的时间)


这是基于Stack中其他事物的答案,听起来应该是可行的,但它总是正确的

同样的事情,如果我只是想用真或假,使事情可见或不可见

Visible ='<%# Eval("Hours2") != DBNull.Value %>'
Visible=''
我显然错过了一些东西

试试这个:

Visible ='<%# Eval("Hours2").ToString() != "" %>'
Visible=''

Visible=''

您可以尝试用另一种方式检查它。。。这就是我可以做的

<%#(String.IsNullOrEmpty(Eval("Hours2").ToString()) ? "mon-thurs" : "mon-fri")%>

将逻辑移到codehind:

<%# GetString(Eval("Hours2")) %>

如何从SQL中获取它。是指使用LINQ还是呼叫SP?您可以在查询中使用isnull(Hours2,0)Hours2或isnull(Hours2“”)Hours2。它会像这样为你工作

<%# Eval("Hours2") != 0 ? "mon - thurs" : "mon - fri" %>




确实是
!(Eval(“Hours2”)是DBNull)
不起作用?您是否尝试了
null
而不是
DBNull
?这在很大程度上取决于你如何提取数据。我很确定我尝试了空值。我还没有机会研究一下这段代码,但是你对“你如何提取数据”的评论很好!我没有编写从SQL向我提供数据的代码,我最好检查一下它们是怎么做的。好吧,我确信我第一件事就是尝试了
null
,但它不起作用,但在按照建议处理
之后,我实际上得到了一个字符串或
null
这很有效!谢谢
@leppie抱歉,brah,现在修复了它。我只在VB.Net中真正使用了
DBNull
,我在C中使用了
String.IsNullOrEmpty()
,我想再次进行向下投票。代码仍然是假的,无法编译。
DataBinder.Eval
的结果是
object
,而不是
string
。CS1525:If
Eval(“Hours2”)的表达式术语'>'无效
返回一些未实现自定义
ToString的内容
这也将始终是
真的
这是一个很大的帮助。一旦我得到调试以显示我的小时数,我可以看到它正在评估并向我发送一个字符串“的内容“和
null
。我确信我已经测试过了!=像第一次尝试一样为空,但不起作用……这起作用了!谢谢<代码>我本应该再试一次的,一定是我没有看到打字错误。。!!
<%# GetString(Eval("Hours2")) %>
public string GetString(object hours){
 ...
}
<%# Eval("Hours2") != 0 ? "mon - thurs" : "mon - fri" %>
<%# Eval("Hours2") != '' ? "mon - thurs" : "mon - fri" %>
<%# !String.IsNullOrEmpty(Eval("Hours2").ToString()) ? "mon - thurs" : "mon - fri" %>