0

C# でフォームを仕上げています。データ入力を検証したいと思います。「CompareValidator」による検証に関する多くの投稿を見てきました。それは問題なく明確です。

ねじれについてお聞きしたいのですが、AjaxControlToolkit Calendar Extender を使用した結果、1 つのフィールドに日付があります。次のように取得できます。

DateField.Text;

次に、NuGet の MKB Time Select パッケージを使用して、フォームの別のフィールドに時間を入力します。

TimeSelector1.Hour + ":" + TimeSelector1.Minute

使用したい値です。

そのため、ユーザーはフォームに入力し、日付フィールドから日付を選択し、時間セレクターから時間を選択しました。ユーザーがこれらのフィールドで選択した日付と時刻が現在の時刻より少なくとも 24 時間大きいかどうかを確認したいので、バリデーターはこれら 2 つの異なるフィールドを使用して初期データを取得する必要があります。

私はそれについてどのように始めればよいかについて少し混乱しています。

基本的に、バリデーターは次の場合に警告を表示する必要があります

DateField.Text + " " + TimeSelector1.Hour + ":" + TimeSelector1.Minute

より大きい

DateTime.Now.AddHours(24)

しかし、フィールドのプレーンなコンテンツではなく、この種のステートメントを検証するようにバリデーターに指示する方法が明確にわかりません。

4

2 に答える 2

1

提供された情報を使用して、値を DateTime オブジェクトに解析できるはずです。

string dateString = String.Format("{0} {1}:{2}:00", DateField.Text, TimeSelector1.Hour, TimeSelector1.Minute);
DateTime selectedDateTime = new DateTime();
if (DateTime.TryParse(dateString, out selectedDateTime))
{
    if (selectedDateTime > DateTime.Now.AddHours(24))
    {
        // code
    }
}
于 2015-06-06T11:39:17.667 に答える
1

最初に、日付と時刻の文字列を解析して DateTime オブジェクトにし、それを DateTime.Now.AddHours(24) と比較する必要があります。

    var inputDate = "20150606 10:12";
    DateTime date;
    if (!DateTime.TryParseExact(inputDate, "yyyyMMdd HH:mm" , CultureInfo.InvariantCulture, DateTimeStyles.None, out date))
    {
        //datetime has invalid format
    }
    else
    {
        if(date > DateTime.Now.AddHours(24))
        {
            //show warning
        }
    } 
于 2015-06-06T11:41:26.947 に答える