-1

スキャフォールディングされたインデックス ビューで非常に単純な検索を実行しようとしています。通常、これは私にとってはうまくいきますが、日付を使用するとうまくいきません。

私のコントローラーのコードは次のとおりです。

public ActionResult Index(DateTime SearchDate)
{
    var query = from a in db.AppointmentProcedures
                where a.BookingStatus == false
                orderby a.AppointmentStartTime
                select a;

    if (SearchDate != null)
    {

         query = from a in db.AppointmentProcedures
                    orderby a.AppointmentDate
                    where a.AppointmentDate == SearchDate
                    select a;
    }

    return View(query);
}

ただし、変換の問題が発生しています。ビューには、単純な日時ピッカーがあります。

4

4 に答える 4

1

できれば。_ nullつまり、ユーザーが値指定せず、コントロールが許可する. 次に、パラメータを次のようにします。null

DateTime? SearchDate

これにより、次のことが可能になります。

if (SearchDate.HasValue)

さらにクエリを次のように変更します。

query = from a in db.AppointmentProcedures
        orderby a.AppointmentDate
        where a.AppointmentDate == SearchDate.Value
        select a;

それができない場合null。次に、はい、次を確認しますMinValue

if (SearchDate != DateTime.MinValue)
于 2013-10-08T12:37:14.037 に答える
1

DateTime は構造体であり、null にすることはできません。MVC がバインドできない場合は、default(DateTime)which is equal to を使用しDateTime.MinValueます。

DateTime.MinValue は 0001 年 1 月 1 日ですが、Sql DateTime の最小値は 1753 年 1 月 1 日です。クエリで DateTime.MinValue を使用しようとすると、エラーが発生します。

これを修正するには、Nullable DateTime を使用できます。コードの変更は次のようになります。

public ActionResult Index(DateTime? SearchDate)
{
    var query = ...;

    if (SearchDate != null)
    {
         query = ...;
    }

    return View(query);
}
于 2013-10-08T12:38:12.367 に答える
1

あなたのAppointmentDateタイプはデートですか?

SearchDateはいの場合、変換する必要はありませんstring

于 2013-10-08T12:29:04.187 に答える
0
  1. データベースに日付を文字列として保存するのはかなり奇妙です

  2. 次のように変換する前に:

変換された変数 = Convert.ToString(SearchDate);
クエリ = db.AppointmentProcedures の a から
orderby a.AppointmentDate
a.AppointmentDate == 変換された場所
を選択;

Convert.ToString() 関数を認識しないためです (SQL 関数として解釈しようとします)。

于 2013-10-08T12:30:44.443 に答える