Я бы порекомендовал оставить стандартное связующее устройство для выполнения своей работы, он неплохо справляется с этим и будет решать проблемы локализации (то есть разные форматы дат для разных локалей) для вас.
Учтите, что всегда будут ограничения на то, как пользователь может ввести дату (вы не позволяете им вводить yyyy-MM-dd
, даже если это допустимый формат даты). Ваш собственный код связующего не изменится, потому что он предоставляет формат.
Я бы предположил, что ваша цель должна заключаться в том, чтобы пользователи могли вводить даты в формате, который был бы наиболее обычным для них (например, dd/MM/yyyy
в Великобритании или Испании, MM/dd/yyyy
в США и т. Д.). Это будет иметь дело с большинством случаев. Если вам необходимо обслуживать пользователей в разных локалей, модель по умолчанию Связыватель будет делать все это для вас, так долго, как вы установите культуру потока для сеанса пользователя:
string cultureCode = "en-GB"; //retrieve eg. from user profile
Thread.CurrentThread.CurrentCulture = new CultureInfo(cultureCode)
Если вы хотите, чтобы помочь пользователям, которые ввод дат в других форматах, просто наведите на страницу подсказку, в которой объясняется ожидаемый формат.
Если вам действительно необходимо принять несколько форматов для каждого языкового стандарта, вам нужно будет написать настраиваемое связующее устройство, и вам может потребоваться передать массив приемлемых форматов для каждого локали, с которым вы имеете дело.
Хороший вопрос. сталкиваются с аналогичными проблемами с форматами дат в asp.net mvc – Andrei