Проблемы с настройкой даты на удаленной машине

#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:

Вы можете указать язык программирования в файле веб-конфигурации