如何使用object处理null date值

时间:2017-01-04 07:53:27

标签: c# asp.net

如何使用C#ASP.NET C#中的对象处理空值。

下面我使用超链接在条件上做了可见的真假。

<asp:Label ID="Label3" runat="server"  Text="Date not confirm" 
     Visible='<%#GetVisible2(Eval("DateofEvent").ToString()=="")%>'></asp:Label>

下面是我的c#代码。

public bool GetVisible2(object value)
{
    if (value=="")
    {
        //return value.ToString() == "Visible";
        return true;
    }
    return false;
}

每次只返回假。我不知道条件是正确还是错误。

5 个答案:

答案 0 :(得分:0)

默认情况下,DateTime变量采用DateTime.MinValue,因此您应该将其与此进行比较,如下所示:

<asp:Label ID="Label3" runat="server"  Text="Date not confirm" 
         Visible='<%#GetVisible2(Eval("DateofEvent"))%>'></asp:Label>

    public bool GetVisible2(DateTime? value)
    {
        if (value == null || value == DateTime.MinValue)
        {
            return true;
        }
        return false;
    }

答案 1 :(得分:0)

因为你传递的函数是一个永远不等于空字符串的布尔值:

Eval("DateofEvent").ToString()=="" // this will generate true or false

这会将布尔值传递给GetVisible2。试试这个:

<asp:Label ID="Label3" runat="server"  Text="Date not confirm" 
     Visible='<%#GetVisible2(Eval("DateofEvent").ToString())%>'></asp:Label>

您可以将功能更改为:

public bool GetVisible2(string value)
{
   return String.IsNullOrEmpty(value);
}
Tim Schmelter提出的更清洁的方法,没有任何验证方法:

<asp:Label ID="Label3" runat="server"  Text="Date not confirm" 
     Visible='<%#String.IsNullOrEmpty(Eval("DateofEvent").ToStrin‌​g())%>'></asp:Label>

答案 2 :(得分:0)

您正在评估ASPX页面内的函数并将布尔值传递给GetVisible2函数。

这就是你每次都返回false的原因,因为对象值永远不是字符串,而是布尔值。

应该是

Eval("DateofEvent")

与其使用

Eval("DateofEvent").ToString() == ""

功能将是

public bool GetVisible2(object value)
{
    return value!=null;
}

或者,如果你想考虑空字符串&#34; null&#34;另外,您可以执行以下操作

public bool GetVisible2(object value)
{
    var s = value as string;
    return value!=null || (s is string && !string.IsNullOrEmpty(value as string));
}


  

gettting错误:对象doest不包含对string的定义,并且没有扩展方法tostring acception可以找到object类型的第一个参数。 @OrcusZ

不是

toString()

但它是

ToString()

C#区分大小写。

答案 3 :(得分:0)

我认为在将其转换为字符串之前传递v1 = [1 NaN 8 NaN 6]; 会更好,因为;如果DateofEvent为空,则DateofEvent将引发.ToString(),因此更改将如下所示:

NullReference

因此传递给方法的参数将是一个对象,我们必须检查null然后检查空字符串,所以方法将是这样的:

 <asp:Label ID="Label3" runat="server"  Text="Date not confirm" 
 Visible='<%#IsVisible(Eval("DateofEvent"))%>'></asp:Label>

甚至是这样的:public bool IsVisible(object value) { return value != null && String.IsNullOrEmpty(value.ToString()); }

答案 4 :(得分:-1)

存在检查字符串为空的方法:

  if (String.IsNullOrEmpty(value))
    {
        return true;
    }
    return false;