Для фона мы находимся в процессе обновления до Windows Server 2012 R2, и тестирование показало, что некоторые текстовые поля ввода даты на нашем сайте ASP.NET не работают должным образом. В текстовых полех для них определен параметр CompareValidator, чтобы проверить, установлена ли одна дата позже другой.ASP.NET сгенерированный код: откуда берется «датапорядок»?
<asp:CompareValidator ID="CompareValidator3" runat="server" ControlToCompare="txtStartDate"
ControlToValidate="txtEndDate" ErrorMessage="..." Operator="GreaterThan" Type="Date"
Display="Dynamic"></asp:CompareValidator>
Это CompareValidator терпит неудачу все время теперь на Windows Server 2012, в то время как старый сайт, размещенный на Windows Server 2008 не имеют этой проблемы. Я сделал некоторые копания, и я думаю, что наиболее вероятным виновником является изменение формата даты по умолчанию для региона Канады в Windows Server 2012. В сгенерированном коде для страницы элемент DOM для валидатора имеет свойство «dateorder», которое всегда устанавливается на «ymd». Это значение является «dmy» на старом сайте.
...
cutoffyear: "2029"
dataset: DOMStringMap
dateorder: "ymd"
dir: ""
display: "Dynamic"
...
Поскольку наши входы принимают даты строки, как «01/01/2015», то «ГМД» модель не соответствует и валидатор возвращает ложь. Я изменил настройки формата даты везде, о которых я мог думать, и даже попытался изменить настройки .NET Глобализации на сайте IIS, чтобы использовать другую культуру (en-GB), и ничего не сработало. Мне очень любопытно, откуда эта настройка «ymd», и как ее изменить. Любая помощь приветствуется. Благодаря!
Отредактировано потому, что я думал, что вы хотели ymd вместо dmy. –
Мы пробовали это без успеха, возможно, из-за настроек культуры в нашей CMS. После отладки глобального кода, чтобы убедиться, что он запущен, мы проверили CurrentCulture на странице, а формат даты - не тот, который мы установили. Спасибо за предложение. – user3250365