Как изменить формат ввода по умолчанию для подшивки модели DateTime в .Net MVC? - PullRequest
4 голосов
/ 14 июля 2009

У меня довольно стандартный метод .Net MVC Controller:

public ActionResult Add(Customer cust) {  
  //do something...  
  return View();
}

Где Клиент что-то вроде:

public class Customer {
  public DateTime DateOfBirth { get; set; }
  //more stuff...
}

И страница, содержащая:

<div><%= Html.TextBox("DateOfBirth") %></div>

Проблема в том, что мой сайт расположен на американском сервере, поэтому cust.DateOfBirth анализируется в американском формате MM / dd / yyyy. Однако я хочу, чтобы пользователи вводили дату своего рождения в британском формате дд / мм / гггг.

Могу ли я изменить формат ввода по умолчанию для DateTime ModelBinder или мне нужно создать свой собственный ModelBinder?

Ответы [ 2 ]

4 голосов
/ 14 июля 2009

Вы можете изменить язык в файле web.config или на уровне страницы. Если вы хотите изменить только формат даты, а не другие аспекты культуры, однако, для этого может потребоваться изменить DateTimeFormat текущей культуры с помощью кода в global.asax или обычном базовом контроллере и установить его в DateTimeFormat для "en -GB».

Ссылка

Чтобы установить культуру пользовательского интерфейса для все страницы, добавить раздел глобализации в файл Web.config, а затем установите культура и культура, как показано в следующем примере:

<globalization uiCulture="en" culture="en-GB" />

Чтобы установить культуру пользовательского интерфейса для отдельная страница, установить культуру и UICulture атрибуты @ Page директива, как показано в следующем Пример:

<%@ Page UICulture="en" Culture="en-GB" %>

Чтобы ASP.NET установил культуру пользовательского интерфейса и культура на первый язык, который указано в текущем браузере настройки, установите UICulture и Культуру в авто. Кроме того, вы можете установить это значение для auto: culture_info_name, где culture_info_name - это название культуры. Список названий культур см. CultureInfo. Вы можете сделать эту настройку либо в директиве @ Page, либо Файл Web.config.

Альтернатива:

 CultureInfo.CurrentUICulture.DateTimeFormat
     = CultureInfo.CurrentCulture.DateTimeFormat
     = new CultureInfo( "en-GB", false ).DateTimeFormat;
2 голосов
/ 14 июля 2009

Вы можете изменить значение различных шаблонов ярлыков. В вашем случае это будет шаблон короткой даты или "d". Если вам в целом нравится культура en-US, но вам просто нужно изменить шаблон даты и времени на короткое время, вы можете добавить это к Global.asax.

protected void Application_BeginRequest(Object sender, EventArgs e)
{
    CultureInfo ci = new CultureInfo("en-US");
    ci.DateTimeFormat.SetAllDateTimePatterns(
        new string[] { "dd/MM/yyyy" },
        'd'
    );
    System.Threading.Thread.CurrentThread.CurrentCulture = ci;
    System.Threading.Thread.CurrentThread.CurrentUICulture = ci;
}

Первый массив - это поддерживаемые форматы даты и времени, второй символ - шаблон, который вы хотите заменить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...