2014-03-17 3 views
2

Если у меня есть контроллер, как это ...Локальные параметры в контроллере MVC

Public Function GetData(fromDate As Date, toDate As Date) As ActionResult

тогда мой URL должен быть английский (ДД-ММ-ГГГГ) как ...

.../GetData? FromDate = 2-27-2014 & Todate = 9-29-2014

Но так как все мои пользователи Danish (DD-MM-YYYY), это не будет работать ...

.../GetData? FromDate = 27-2-2014 & Todate = 29-2-2014

Могу ли я сказать MVC ожидать датского аргументы (ДД-ММ-ГГГГ) или я должен перевести дата MM-DD-YYYY на клиенте перед отправкой на сервер?

+1

Опубликуйте дату как строку и нормализуйтесь на сервере перед использованием даты. – Jasen

ответ

1

MVC модель привязки учитывает текущей культуры (локаль). Например, ваши пользователи используют культуру da-DK, а ваше приложение (сервер) настроено на en-US. Таким образом, форматы дат будут отличаться между двумя культурами.

Один простой вариант для этого в вашем Web.config под <system.web> набор

<globalization culture="da-DK" uiCulture="da-DK" /> 

Это глобально конфигурирует приложение для использования da-DK культуры. Таким образом, действие вашего контроллера, как ожидается, ожидает даты в формате dd-MM-yyyy.

Скотт Hanselman есть хорошая статья на эту тему: Globalization, Internationalization and Localization ...

UPDATE

Этот ответ действителен только для посланных данных, однако в MVC строка запроса анализируется с помощью InvariantCulture. InvariantCultureShortDatePattern - MM/dd/yyyy.

Например, следующие параметры строки запроса будут обрабатываться как 7 января 2014 года: 01/07/2014, 01-07-2014, 01.07.2014.

Также было проанализировано 7 января 2014 года: 2014/01/07, 2014-01-07, 2014.01.07.

Этот последний пример совпадает с международным форматом даты ISO, и этот формат должен использоваться для параметров строки запроса.

+0

Хороший - не знал этого. Это может решить проблемы для меня. Благодаря!! – MojoDK

2

Если вы используете формат даты ISO 8601, ваши привязки будут работать для любого языка.

В VB.Net вы можете использовать строковый формат .ToString("s"), чтобы создать параметры для вашего URL-адреса.

В JavaScript вы можете использовать функцию .toISOString() для создания параметров для вашего URL-адреса.

Формат даты ISO 8601 будет связываться с параметром DateTimeOffset в контроллере:

Public Function GetData(fromDate As DateTimeOffset, toDate As DateTimeOffset) As ActionResult 
+0

Мне жаль, что я не могу установить оба ответа как правильные - потому что оба ответа ОЧЕНЬ полезны - спасибо, что помогли мне здесь !!!! :) – MojoDK

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