#c# #asp.net-mvc #datetime #cultureinfo
#c# #asp.net-mvc #дата и время #cultureinfo
Вопрос:
Я кодирую ASP.NET Приложение MVC на испанском компьютере, поэтому моя дата (дд / мм / гггг).
Но мой удаленный vps использует en-US W2k8, поэтому, когда я создаю дату на этом компьютере, она будет (мм / дд / гггг)
Я не уверен, как правильно это решить.
У меня есть форма регистрации, которая принимает строку типа (дд / мм / гггг) и отправляет ее на контроллер. Я предполагаю, что связующее устройство модели создает новую дату и время, которая будет отправлена на контроллер, потому что, если я вставлю (на удаленном компьютере) что-то вроде 31/10/2011, в нем говорится, что дата неверна, поэтому, когда связующее устройство модели пытается создать дату и время, оно плачет.
Итак, мне нужен способ указать (я предполагаю, что это будет что-то глобальное), что все мои даты будут дд / мм / гггг. Поэтому, когда связующее устройство модели создает новую дату, оно будет использовать этот формат.
Как я это делаю? Я думаю, что в будущем это будет проблематично, потому что я тоже хочу локализовать свое приложение на английском языке, и английские пользователи будут использовать mm / dd / yyyy.
Ответ №1:
На самом деле у меня нет никакого опыта работы с MVC3, но на высоком уровне ваша проблема довольно тривиальна. Ваша текущая культура потока должна соответствовать культуре на стороне клиента, прежде чем запрос будет привязан к объекту модели. Существуют разные способы сделать это, но наиболее очевидными являются:
1) разделите приложение на подпапки культуры верхнего уровня. Т.е. превратите ваш /my_url/ в /en/my_url/, / sp/my_url / и т. Д. Добавьте Web.config в каждый из них с соответствующими настройками культуры. Вероятно, это больше работы, чем вы хотите в нее вложить.
2) отправьте информацию о культуре с данными формы и перехватите ее перед привязкой. Я уверен, что есть какое-то событие, которое вы можете обработать до выполнения действия вашего контроллера. Вы можете добавить туда 1-строчную строку, чтобы установить текущую культуру потока в зависимости от параметра post.
Вероятно, есть способ объединить эти два на основе сопоставления запросов. Что-то вроде /{language}/my_url/ . Как я уже сказал, я на самом деле недостаточно использую MS-версию шаблона проектирования MVC, чтобы знать его технические детали.
Ответ №2:
Вы можете указать язык программирования в файле веб-конфигурации