繁体   English   中英

System.FormatException:字符串未被识别为有效的DateTime

[英]System.FormatException: String was not recognized as a valid DateTime

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

我究竟做错了什么?

谢谢

克莱尔

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

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

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

编辑:谢谢汉斯的更正。

如果您已经复制并粘贴了代码,则该函数中可能有错别字-函数参数命名为Today Date,但是where语句使用todayDate(这是您的ASP参数)。

如果不是这种情况,请发布您从中调用GetComments函数的位置。

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

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

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

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

克里斯指出,没有理由将DateTime.Now转换为DateTime。 它已经是一个了。

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

在找到答案之后,我可以在后面的代码中设置DefaultValue,然后我在网上再次浏览并找到了本教程

现在正在工作。

这是我的代码:

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

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

我希望这是正确的方法。 有人对此有何评论?

再次感谢

克莱尔

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM