2012-07-02 4 views
3

У меня есть текстовое поле со значением, которое хранит ValidFrom формы значение:ObjectDataSource не удается разобрать строку в DateTime

31.01.2012 

и культуры устанавливается:

<globalization culture="en-GB" uiCulture="en-GB"/> 

в web.config.

И теперь, ObjectDataSource метод обновления:

public static void UpdateLac(int id, DateTime ValidFrom) 
    { 
     /// ... 
    } 

терпит неудачу, как я получаю исключение, что строка не может быть разобрана. Однако дата в формате dd.mm.yyyy (31.01.2012) действительна в формате en-GB и может быть проанализирована (насколько я знаю). Я тестировал его с помощью следующего кода:

  DateTimeFormatInfo dtfi = CultureInfo.CreateSpecificCulture("en-GB").DateTimeFormat; 
      var date = DateTime.Parse("31.01.2012", dtfi); 
      Console.Write(date.ToLongDateString()); 

Так как же, что внутренняя конверсия ObjectDataSource не удается преобразовать строку (31.01.2012) в DateTime в этом примере?

+0

просто попробуйте 01.31.2012 и посмотрите, не работает ли его рабочий или нет –

+0

01.31.2012 преобразуется в DateTime ObjectDataSource, но 01.31.2012 не конвертируется, когда я звоню (просто для проверки) DateTime.Parse ("01.31.2012") внутри postback (поскольку моя культура установлена ​​в en-GB) – dragonfly

+0

Может ли тип объекта работать с ODS? Если это нестандартный тип, можете ли вы предоставить исходный код для его свойств и полей? – Jeff

ответ

0

Насколько я знаю, информация о культуре загружается непосредственно из ОС (в этом случае окна), вы можете проверить региональные настройки для указанного формата. Это скриншот из моего компьютера:

http://imageshack.us/photo/my-images/96/engbg.png/

Как вы можете видеть формат короткой даты является: дд/ММ/аа, поэтому, возможно, есть что-то происходит с сервера региональных настроек или вход должен be: 31//12 вместо 31.01.2012

Надеюсь, это поможет.