2012-05-03 4 views
-1

У меня есть два текстовых поля, txtStartDate, txtEndDate, которые позволяют пользователям выбирать дату в формате (дд/мм/гггг). Мне нужно создать валидатор, который проверяет, не превышает ли количество дней между этими двумя выбранными датами пользователя 45 дней или меньше. Могу ли я использовать один из элементов Validator, например Range или Compare, или мне нужно создать пользовательский валидатор? Любые примеры были бы очень полезными.Контрольные проверки Количество дней между двумя датами

+0

Я решил удалить свой ответ, потому что вы просто ленитесь, чтобы внести свой вклад даже при небольшой попытке. Если вы этого не измените, вам не подходит этот сайт или что-то еще. –

ответ

0

Попробуйте этот блок:

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 
+0

Куда будет идти этот блок кода? –

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 = Дата, чтобы гарантировать, что дата была введена в обеих.

+0

Если вы можете дать мне подробные примеры, это будет очень полезно, например, как выглядит CustomValidator, а также функция Javascript. –

+0

@ScrumMaster: Я добавил дополнительные сведения о разметке customvalidator и проверке сервера. В настоящее время у меня нет времени, чтобы показать вам возможную реализацию javascript. Попробуйте сами со ссылкой, которую я предоставил (либо [ввод данных jQuery] (http://jonathanleighton.com/projects/date-input/#date-formatting), либо [функции Matt Kruse date] (http: // www .mattkruse.com/JavaScript/дата /)). –

Смежные вопросы