为什么这对我不起作用?它总是返回TRUE

时间:2012-02-02 05:11:37

标签: c# asp.net eval

我一直在拉着我的头发试图弄清楚为什么这似乎适用于其他人而不是我。

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

'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语句。我已经使用

<%# Eval("Hours2") %>获取值并且显示正常...

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

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

这基于其他关于Stack的其他内容的答案听起来应该可行,但它总是正确的......

同样的事情,如果我试图使用True或False来使事物变得可见......

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

我显然在这里遗漏了一些东西...... !!!

4 个答案:

答案 0 :(得分:1)

将逻辑移至代码隐藏:

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

然后使用调试器找出实际传递的内容。

public string GetString(object hours){
 ...
}

答案 1 :(得分:0)

试试这个:

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

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

答案 2 :(得分:0)

您可以尝试以不同的方式检查它...这就是我可能会这样做的。

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

答案 3 :(得分:0)

如何从SQL中获取它。意味着使用LINQ还是调用SP?您可以在查询中使用isnull(Hours2,0)Hours2或isnull(Hours2,'')Hours2。这对你有用。

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

OR

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

OR

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