2013-07-10 1 views
6

Это хороший подход в модели связующего использовать такой код:Каков наилучший способ разбора даты в связующем

TryParseDate(result.AttemptedValue, format, out parsedDate) 

А затем «Формат» является переменной с различными (конкретный клиент) формат даты , Как 12/31/2013 или 31.12.2013 или другие.

У меня большая проблема с привязкой к формату, потому что если пользователь ставит дату только с одной цифрой, например: 1/1/2014, она не будет анализироваться, потому что в форматах разрешенные форматы: dd/MM/yyyy I знаете, что можно решить, заменив этот формат на d/M/yyyy, а затем он работает для обоих случаев, но является ли это хорошим подходом или это опасно?

Заранее благодарю вас!

+0

Хороший вопрос. сталкиваются с аналогичными проблемами с форматами дат в asp.net mvc – Andrei

ответ

1

Я бы порекомендовал оставить стандартное связующее устройство для выполнения своей работы, он неплохо справляется с этим и будет решать проблемы локализации (то есть разные форматы дат для разных локалей) для вас.

Учтите, что всегда будут ограничения на то, как пользователь может ввести дату (вы не позволяете им вводить yyyy-MM-dd, даже если это допустимый формат даты). Ваш собственный код связующего не изменится, потому что он предоставляет формат.

Я бы предположил, что ваша цель должна заключаться в том, чтобы пользователи могли вводить даты в формате, который был бы наиболее обычным для них (например, dd/MM/yyyy в Великобритании или Испании, MM/dd/yyyy в США и т. Д.). Это будет иметь дело с большинством случаев. Если вам необходимо обслуживать пользователей в разных локалей, модель по умолчанию Связыватель будет делать все это для вас, так долго, как вы установите культуру потока для сеанса пользователя:

string cultureCode = "en-GB"; //retrieve eg. from user profile 
Thread.CurrentThread.CurrentCulture = new CultureInfo(cultureCode) 

Если вы хотите, чтобы помочь пользователям, которые ввод дат в других форматах, просто наведите на страницу подсказку, в которой объясняется ожидаемый формат.

Если вам действительно необходимо принять несколько форматов для каждого языкового стандарта, вам нужно будет написать настраиваемое связующее устройство, и вам может потребоваться передать массив приемлемых форматов для каждого локали, с которым вы имеете дело.

 Смежные вопросы

  • Нет связанных вопросов^_^