2009-09-02 78 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

在服務器控件()中使用<%= ..%>語法是不可能的。使用代碼隱藏來設置屬性。

相關問題