2009-09-02 47 views
1

我正在使用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. 

我在做什么错?

感谢

克莱尔

+2

DateTime.Now是一个DateTime对象,你不需要把它转换 – 2009-09-02 14:36:22

回答

0

谢谢大家的帮助。你把我放在正确的轨道上。

找到后我可以在后面的代码中设置DefaultValue我有另一个环顾网络,发现this tutorial

这是现在工作。

这里是我的代码:

protected void comments_Selecting(object sender, ObjectDataSourceSelectingEventArgs e) 
    { 
     e.InputParameters["todayDate"] = DateTime.Now; 
    } 

但是请注意首先你必须创建一个“选择”事件(在属性选项卡内)。

我希望这是做到这一点的正确方法。有没有人对此有任何评论?

再次感谢

克莱尔

1

您可以在页面加载添加SelectParameter。只需加上 -

SqlDataSource1.SelectParameters["todayDate"].DefaultValue = Datetime.Now; 

编辑:感谢汉斯的纠正。

+0

我已经加入到该网页的加载,但我收到以下错误信息 - 系统。 Web.UI.WebControls.ObjectDataSource.SelectParameters'不能像C#中的方法 – ClareBear 2009-09-02 14:56:05

+1

一样使用,使用SelectParameters [“todayDate”],即[]而不是()。 – 2009-09-02 15:08:58

+0

我现在收到以下错误:对象引用未设置为对象的实例。即使我把一个'if'语句放在一边(检查是否为空),它仍然会给出相同的错误。 – ClareBear 2009-09-03 07:48:52

0

如果您已经复制并粘贴了您的代码,那么您可能在函数中存在拼写错误 - 函数参数今天被命名为s Date,但where语句使用todayDate(它是您的ASP参数)。

如果情况并非如此,请从您的GetComments函数中调用。

+0

对不起,这是我的一个错字。在我的代码中,它是今天 – ClareBear 2009-09-02 15:02:46

0

您确定这是错误的正确位置吗?下面是Convert.ToDateTime做:

public static DateTime ToDateTime(bool value) 
    { 
     return ((IConvertible) value).ToDateTime(null); 
    } 

日期时间是IConvertible,它实现ToDateTime得很干脆:

DateTime IConvertible.ToDateTime(IFormatProvider provider) 
    { 
     return this; 
    } 

正如克里斯指出,没有理由DateTime.Now转换为约会时间。它已经是一个了。

+0

我也试过只是DateTime.Now.Date/Datetime.Now/Datetime.Today/Datetime.Now.ToString/Datetime.Now.Date.ToString以及所有给出相同的错误 – ClareBear 2009-09-02 15:03:42

2

在服务器控件()中使用<%= ..%>语法是不可能的。使用代码隐藏来设置属性。

相关问题