Вы должны будете использовать CustomValidator
, чтобы сделать это. В вашем markyou у вас будет что-то вроде этого:
<asp:TextBox ID="txbStartDate" runat="server" />
<asp:TextBox ID="txbEndDate" runat="server" />
<asp:CustomValidator OnServerValidate="ValidateDuration"
ErrorMessage="Dates are too far apart" runat="server" />
И в своем коде вы определяете обработчик проверки:
protected void ValidateDuration(object sender, ServerValidateEventArgs e)
{
DateTime start = DateTime.Parse(txbStartDate.Text);
DateTime end = DateTime.Parse(txbEndDate.Text);
int months = (end.Month - start.Month) + 12 * (end.Year - start.Year);
e.IsValid = months < 12.0;
}
Обратите внимание, что приведенный выше код может генерировать исключения . Вам нужно будет добавить дополнительные валидаторы, чтобы проверить, что введенные даты могут быть проанализированы, и метод ValidateDuration
должен быть изменен, чтобы подтвердить, что эти другие валидаторы прошли перед выполнением собственных тестов.
Кроме того, вы можете добавить еще один валидатор, чтобы проверить, что дата окончания на самом деле больше (или равна) дате начала. Нарушение этого правила, вероятно, должно привести к появлению собственного сообщения об ошибке проверки.
<asp:CompareValidator Operator="GreaterThanEqual" Type="Date"
ControlToValidate="txbEndDate" ControlToCompare="txbStartDate"
ErrorMessage="Let's get started first!" runat="server" />