#c# #asp.net #.net #telerik
#c# #asp.net #.net #telerik
Вопрос:
У меня следующий сценарий: мой сайт разработан для работы с разными культурами (в основном арабским и английским), когда пользователь выбирает культуру «ar-sa» (из параметров Internet Explorer), все средства выбора даты и времени преобразуются в формат хиджры. На одной из моих страниц я использовал элемент управления RadTimePicker telerik, при запуске этой страницы из Visual Studio ошибка не появляется, но когда мы развернули эту страницу на сайте, вышла следующая ошибка:
Допустимые значения находятся в диапазоне от 1318 до 1450 включительно. Имя параметра: год
Я попытался развернуть страницу на компьютере моего коллеги (в локальном IIS), появляется ошибка. Затем я попытался развернуть его на своем компьютере с помощью IIS, на этот раз без ошибок!!
пожалуйста, кто-нибудь может дать мне подсказку о том, с чего начать, чтобы найти ошибку
Заранее спасибо
Комментарии:
1. Я бы начал с справочного форума Telerik.
2. Какой-либо код, участвующий в чтении / настройке элемента управления? Можете ли вы получить трассировку стека?
3. я пытался получить трассировку стека и не смог! мне нужно знать, почему эта разница между разными iis и vs virtual iis
Ответ №1:
Любые объекты даты и времени, созданные в .NET с помощью CultureInfo «ar-sa», будут использовать объект UmAlQuraCalendar, который указывает, что допустимые даты должны иметь свой год между 1318 и 1450. Проверьте .СОЗДАЙТЕ документацию для этого объекта, и вы увидите. Для моего проекта мне пришлось загрузить дату без языка, затем сверить ее диапазон с диапазонами минимального и максимального года календаря текущей культуры, и если они выходят за пределы этого диапазона, преобразовать значение в значение внутри этого диапазона, прежде чем анализировать дату и время, которым был присвоен соответствующий информационный объект культуры. Обратите внимание на это.Объекты NET date time ВСЕГДА написаны на григорианском языке. Чтобы увидеть дату как дату в другом календаре, вы всегда должны просматривать ее через объект Calendar, который соответствует используемой вами культуре.
Ответ №2:
http://www.telerik.com/community/forums/winforms/calendar-and-datetimepicker/valid-values-are-between-1318-and-1450-inclusive-parameter-name-year.aspx охватывает аналогичное использование.
Что касается того, почему это работает на одной машине, а не на другой, я бы заподозрил, что где-то по ходу используется одна из неявных культур (CurrentCulture и CurrentUICulture), и это может конфликтовать или не конфликтовать с вашим явным использованием ar-SA в зависимости от того, что это такое.
Комментарии:
1. я не понял, как насчет CurrentCulture и CurrentUICulture? я меняю их, чтобы они совпадали с выбранной пользователем культурой.
Ответ №3:
На каком сервере вы размещались? Формат даты и времени зависит от настроек на панели управления вашего компьютера.
Если ваш сайт размещен на сервере в США, вам необходимо соответствующим образом изменить контекст datetime.
Ответ №4:
УКАЖИТЕ свойство Culture как culture=»Английский (Соединенные Штаты)»
<telerik:raddatepicker id="dt_DOB" runat="server" culture="English (United States)">
</telerik:raddatepicker>
Чем использовать любую из культур.
Ответ №5:
в коде, лежащем в основе, установите календарь культуры таким, чтобы он всегда был грузинским. Смотрите ниже пример с Telerik DateTimePicker на mypage.aspx
mypage.aspx:
<telerik:RadDateTimePicker ID="CtrlStartPeriod" runat="server">
<DateInput DateFormat="G" DisplayDateFormat="G" runat="server"></DateInput>
</telerik:RadDateTimePicker>
mypage.aspx.cs:
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
CtrlStartPeriod.DateInput.Culture.DateTimeFormat.Calendar = new GregorianCalendar();