我正在使用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.
我做错了什么?
由于
克莱尔
答案 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;
}
但请注意,首先必须创建一个“选择”事件(在属性选项卡中)。
我希望这是正确的做法。有没有人对此有任何意见?
再次感谢
克莱尔