RangeValidator не работает в веб-пользовательском элементе управления

Я создаю элемент управления календарем, используя расширитель календаря ajax. В этом элементе управления мне нужно проверить дату от и до. Для этого я использую элемент управления asp RangeValidator. Формат каландра установлен на [MM / dd / yyyy].

<asp:RangeValidator ID="RGvDt" runat="server" ErrorMessage="Invalid Date" 
        ForeColor="Red" Display="Dynamic" ControlToValidate="txtDate" Type="Date">
</asp:RangeValidator> 

Но это не работает. Устраняет ошибку.

The value '01/31/2022' of the MaximumValue property of 'RGvDt' cannot be converted to type 'Date'.

Но этот код отлично работает на странице aspx. Может ли кто-нибудь сказать мне, как я могу использовать RangeValidator в моем пользовательском элементе управления. И как я могу изменить формат проверки на [dd / MM / yyyy]


person Ashish Rathore    schedule 26.06.2013    source источник


Ответы (1)


/ имеет особое значение в строке формата даты. Это означает: «замените меня разделителем даты вашей текущей культуры». Например, в Германии это ..

MSDN

Описатель настраиваемого формата «/» представляет собой разделитель даты, который используется для различения лет, месяцев и дней. Соответствующий локализованный разделитель даты извлекается из свойства DateTimeFormatInfoDateSeparator текущего или указанного языка и региональных параметров. ...

Я думаю, что единственный способ проверить этот формат - использовать CustomValidator. Затем вы можете проанализировать дату таким образом (на стороне сервера):

DateTime dt;
if(DateTime.TryParseExact(txtDate, "MM/dd/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out dt))
{
    // now there is a valid date in dt
}

Обратите внимание на CultureInfo.InvariantCulture, который я использовал для принудительного применения / в качестве фактического разделителя даты.

person Tim Schmelter    schedule 26.06.2013