System.FormatException:String未被识别为有效的DateTime

时间:2009-09-02 14:33:13

标签: c# .net linq datetime objectdatasource

我正在使用c#.net。提前感谢您的帮助。

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

我做错了什么?

由于

克莱尔

5 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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

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

编辑:感谢汉斯的纠正。

答案 2 :(得分:0)

如果您复制并粘贴了代码,那么函数中可能会出现拼写错误 - 函数参数今天命名为 s 日期,但where语句使用todayDate(这是您的ASP)参数)。

如果不是这种情况,请发布您从中调用GetComments功能的地方。

答案 3 :(得分:0)

您确定这是错误的正确位置吗?这是Convert.ToDateTime的作用:

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

DateTime是一个IConvertible,它非常简单地实现了ToDateTime:

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

正如Chris指出的那样,没有理由将DateTime.Now转换为DateTime。它已经是一个。

答案 4 :(得分:0)

谢谢大家的帮助。你让我走上了正确的轨道。

在发现我可以在后面的代码中设置DefaultValue后,我再次浏览网页并找到this tutorial

现在正在运作。

这是我的代码:

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

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

我希望这是正确的做法。有没有人对此有任何意见?

再次感谢

克莱尔