System.FormatException:String未被识别为有效的DateTime
我正在使用c#.net。预先感谢您的帮助。System.FormatException:String未被识别为有效的DateTime
我正在使用Repeater和ObjectDataSource。我使用LINQ连接到数据库。这需要传递一个参数(在WHERE子句中使用)
public IQueryable<comments> GetComments(DateTime todaysDate)
{
return (from c in dc.comments
where displayDate.Date == todayDate.Date
select c);
}
我正在计算上面的错误,不知道为什么。这里是问题所在:
<asp:Parameter DefaultValue="<%=Convert.ToDateTime(DateTime.Now)%>" Name="todayDate" Type="DateTime" />
如果我提供了一个实际的日期它的工作原理。例如:
<asp:Parameter DefaultValue="02/09/2009" Name="todayDate" Type="DateTime" />
我也曾尝试以下,并收到了同样的错误:
DateTime.Now.Date
Datetime.Now
Datetime.Today
Datetime.Now.ToString
Datetime.Now.Date.ToString.
我在做什么错?
感谢
克莱尔
谢谢大家的帮助。你把我放在正确的轨道上。
找到后我可以在后面的代码中设置DefaultValue我有另一个环顾网络,发现this tutorial。
这是现在工作。
这里是我的代码:
protected void comments_Selecting(object sender, ObjectDataSourceSelectingEventArgs e)
{
e.InputParameters["todayDate"] = DateTime.Now;
}
但是请注意首先你必须创建一个“选择”事件(在属性选项卡内)。
我希望这是做到这一点的正确方法。有没有人对此有任何评论?
再次感谢
克莱尔
您可以在页面加载添加SelectParameter。只需加上 -
SqlDataSource1.SelectParameters["todayDate"].DefaultValue = Datetime.Now;
编辑:感谢汉斯的纠正。
如果您已经复制并粘贴了您的代码,那么您可能在函数中存在拼写错误 - 函数参数今天被命名为s Date,但where语句使用todayDate(它是您的ASP参数)。
如果情况并非如此,请从您的GetComments函数中调用。
对不起,这是我的一个错字。在我的代码中,它是今天 – ClareBear 2009-09-02 15:02:46
您确定这是错误的正确位置吗?下面是Convert.ToDateTime做:
public static DateTime ToDateTime(bool value)
{
return ((IConvertible) value).ToDateTime(null);
}
日期时间是IConvertible,它实现ToDateTime得很干脆:
DateTime IConvertible.ToDateTime(IFormatProvider provider)
{
return this;
}
正如克里斯指出,没有理由DateTime.Now转换为约会时间。它已经是一个了。
我也试过只是DateTime.Now.Date/Datetime.Now/Datetime.Today/Datetime.Now.ToString/Datetime.Now.Date.ToString以及所有给出相同的错误 – ClareBear 2009-09-02 15:03:42
在服务器控件()中使用<%= ..%>语法是不可能的。使用代码隐藏来设置属性。
DateTime.Now是一个DateTime对象,你不需要把它转换 – 2009-09-02 14:36:22