C# 如何使用对象处理空日期值
如何在C ASP.NET C中使用对象处理空值 下面我使用超链接在条件的基础上做可见的正确和错误C# 如何使用对象处理空日期值,c#,asp.net,C#,Asp.net,如何在C ASP.NET C中使用对象处理空值 下面我使用超链接在条件的基础上做可见的正确和错误 <asp:Label ID="Label3" runat="server" Text="Date not confirm" Visible='<%#GetVisible2(Eval("DateofEvent").ToString()=="")%>'></asp:Label> 每次只返回false。我不知道条件是正确的还是错误的。存在一个方法来检查字
<asp:Label ID="Label3" runat="server" Text="Date not confirm"
Visible='<%#GetVisible2(Eval("DateofEvent").ToString()=="")%>'></asp:Label>
每次只返回false。我不知道条件是正确的还是错误的。存在一个方法来检查字符串是否为空:
if (String.IsNullOrEmpty(value))
{
return true;
}
return false;
默认情况下,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;
}
因为您向函数传递的布尔值永远不等于空字符串:
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>
或者Tim Schmelter建议的更干净的方法,没有任何验证方法:
<asp:Label ID="Label3" runat="server" Text="Date not confirm"
Visible='<%#String.IsNullOrEmpty(Eval("DateofEvent").ToString())%>'></asp:Label>
您正在ASPX页面内计算函数,并将布尔值传递给GetVisible2函数 这就是为什么每次都返回false,因为对象值不是字符串,而是布尔值 应该是
Eval("DateofEvent")
代替
Eval("DateofEvent").ToString() == ""
功能将是
public bool GetVisible2(object value)
{
return value!=null;
}
或者,如果您还想考虑空字符串NULL,则可以执行以下
public bool GetVisible2(object value)
{
var s = value as string;
return value!=null || (s is string && !string.IsNullOrEmpty(value as string));
}
获取错误:对象不包含对to string的定义,并且没有扩展方法tostring acception找不到object类型的第一个参数@奥库兹 不是
toString()
但它是
ToString()
C是区分大小写的。我认为最好在将其转换为字符串之前传递DateofEvent,因为;如果DateofEvent为null,则.ToString将引发NullReference,因此更改如下所示:
<asp:Label ID="Label3" runat="server" Text="Date not confirm"
Visible='<%#IsVisible(Eval("DateofEvent"))%>'></asp:Label>
或者甚至像这样的东西:返回值!=null&&value.ToString!= 尝试在谷歌搜索-我搜索了这就是为什么来这里寻求帮助,请帮助@KarthikAMR1。2.了解如何使用调试器。然后在方法中设置断点,并检查传递的值的类型和值。Getting错误:对象不包含对to string的定义,并且没有扩展方法tostring acception找不到object类型的第一个参数@OrcusZif值为null。ToString将为您提供NullReferenceException`IsNullOrEmpty是string类中的静态方法,因此您必须使用string.IsNullOrEmptyvalue.ToString。但是这对OP没有帮助,因为如果这能起作用,OP的代码也会起作用。你的权利,对不起,是在法国的早晨,我需要喝杯咖啡来醒来^^^@OrcusZ:嗯,它仍然没有编译,因为value是一个对象,而IsNullOrEmpty是一个字符串。此外,您必须检查value是否为null,否则您可能会在value.ToString处获得NullReferenceException。最后,这与OP的==-check相同。但是OP将方法的返回值与==进行比较,后者无法工作,因为该方法返回bool。获取此错误:参数1:无法从对象转换为字符串@扎希尔Ahmed@ZaheerAhmed:好吧,但现在这就引出了一个问题:他为什么需要这种方法呢。Visible=@TimSchmelter我想建议,但现在我无法确认语法。谢谢你把它放在这里:如果返回值为null怎么办。。那你需要用什么?数据时间是这样的:日期时间?函数参数中的值。我将在POST中更新我认为没有必要使用对象作为参数,您的值将始终为null或datetime,所以您应该使用datetime?它可以接受null和datetime。请检查我的答案也
ToString()
<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());
}