【问题标题】:Validation Controls Number of Days Between 2 Dates验证控制 2 个日期之间的天数
【发布时间】:2012-05-03 13:45:56
【问题描述】:

我有两个文本框,txtStartDate 和 txtEndDate,允许用户选择格式为 (dd/mm/yyyy) 的日期。我需要能够创建一个验证器来检查这两个用户选择的日期之间的天数是否为 45 天或更短。我可以使用 Range 或 Compare 等验证器控件之一,还是必须创建自定义验证器?任何示例都会很有帮助。

【问题讨论】:

  • 我决定删除我的答案,因为你只是懒得贡献,即使是小小的尝试。如果你不改变这一点,你对这种网站或任何东西都没有好处。

标签: c# asp.net validation datetime


【解决方案1】:

你可以使用CustomValidator:

<asp:CustomValidator id="StartEndDiffValidator"
       ValidateEmptyText="true"
       ClientValidationFunction="StartEndValidate"
       OnServerValidate="StartEndValidate"
       Display="Dynamic"
       ErrorMessage="Timespan between start and end must be exactly 45 days"
       runat="server"/>

This answer 将引导您前往ClientValidationFunction。

始终实现服务器端验证:

void StartEndValidate(object source, ServerValidateEventArgs args)
{
    DateTime startDate;
    DateTime endDate;
    bool isStartDate = DateTime.TryParse(txtStartDate.Text, out startDate);
    bool isEndDate   = DateTime.TryParse(txtEndDate.Text, out endDate);
    if(isStartDate && isEndDate)
    {
        int days = (endDate - startDate ).Days;
        args.IsValid = days == 45;
    }
    else
    {
        args.IsValid = false;
    }
}

您还可以使用 CompareValidators 并将 Operator 属性设置为 ValidationCompareOperator.DataTypeCheck 和 Type=Date 以确保在两者中都输入了日期。

【讨论】:

  • 如果你能给我详细的例子,那将非常有帮助,比如 CustomValidator 应该是什么样子以及 Javascript 函数。
  • @ScrumMaster:我添加了有关 customvalidator 标记和服务器验证的更多详细信息。我目前没有时间向您展示可能的 javascript 实现。用我提供的链接自己试试看(jQuery date input 或Matt Kruse date functions)。
【解决方案2】:

试试这个块:

Dim st As String = txtClientSerStartTime.Text
Dim et As String = txtClientSerEndTime.Text
Dim time1 As DateTime
DateTime.TryParse(st, time1)
Dim ts1 As New TimeSpan(time1.Hour, time1.Minute, time1.Second)

Dim time As DateTime
DateTime.TryParse(et, time)
Dim ts As New TimeSpan(time.Hour, time.Minute, time.Second)

Dim dur As TimeSpan = ts - ts1
Dim unit As Decimal = dur.Hours 

If unti = 45 Then
    'do something'
Else
    'do something'
End If

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-05
    • 1970-01-01
    • 2014-08-07
    • 2021-09-22
    • 2012-09-09
    • 2014-09-19
    • 1970-01-01
    相关资源
    最近更新 更多