2009-09-02 10 views
1

私はc#.netを使用しています。助けを前にありがとう。System.FormatException:文字列が有効なDateTimeとして認識されません

私はRepeaterとObjectDataSourceを使用しています。私はLINQを使ってデータベースに接続します。これは私が上記のエラーをencountingています、その理由がわからない(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を追加することができます

おかげ

クレア

+2

DateTime.NowはDateTimeオブジェクトである、あなたはそれを –

答えて

0

ご協力いただきありがとうございます。あなたは私を正しい軌道に乗せる。

コードの中でDefaultValueを設定することができた後、私はウェブの周りをもう一度見て、this tutorialを見つけました。

これは現在機能しています。

は、ここに私のコードです:

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

しかしあなたは(プロパティ]タブ内)「を選択」イベントを作成する必要があります最初に注意してください。

これが正しい方法だと思います。誰にもこれに関するコメントはありますか?

おかげで再び

クレア

1

。これを追加するだけです -

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

編集:ありがとうございました。

+0

を変換する必要はありません私は私のページのロード中に添加しているが、私は次のエラーメッセージ取得しています - システム。 Web.UI.WebControls.ObjectDataSource.SelectParameters 'は、C#のメソッド – ClareBear

+1

のように使用することはできません。SelectParameters ["todayDate"]を使用します。これは[]ではなく[]です。 –

+0

次のエラーが表示されます。オブジェクト参照がオブジェクトのインスタンスに設定されていません。たとえ私が 'if'文を丸めても(nullでないかどうかを調べても)、同じエラーが返されます。 – ClareBear

0

コードをコピーして貼り付けた場合、機能パラメータには今日の日付が使用されていますが、whereステートメントではtodayDate(ASPパラメータ)が使用されています。

これが当てはまらない場合は、GetComments関数を呼び出す場所に投稿してください。

+0

申し訳ありませんが、それは私の部分のタイプミスでした。私のコードの中ではtodayDate – ClareBear

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を変換する理由はありません日付時刻。それはすでに1つです。

+0

です。私はまた、DateTime.Now.Date/Datetime.Now/Datetime.Today/Datetime.Now.ToString/Datetime.Now.Date.ToStringだけでなく、すべて同じエラーを出しています – ClareBear

2

サーバーコントロール()で<%= ..%>構文を使用することはできません。コードビハインドを使用してプロパティを設定します。