0

我正在用 C# 完成一个表单,我想验证数据输入。我看过很多关于使用“CompareValidator”进行验证的帖子。这很好,很清楚。

我只想问一个转折点:我在一个字段中有日期,这是使用 AjaxControlToolkit 日历扩展器的结果。您可以将其检索为:

DateField.Text;

然后我在表单的另一个字段中有一个小时,使用来自 NuGet 的 MKB Time Select 包。

TimeSelector1.Hour + ":" + TimeSelector1.Minute

是我要使用的值。

因此,用户一直在填写表单,并从日期字段中选择了一个日期,并从时间选择器中选择了一个小时。我想检查用户在这些字段中选择的日期和时间是否比当前时间至少大 24 小时,因此这意味着验证器需要使用这两个不同的字段来获取初始数据。

我对如何开始这件事有点困惑。

基本上,验证器应该显示警告,如果

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 回答