2012-06-21 4 views
1

Я пытаюсь показать дату. Пример моего кода просмотра приведен ниже:Формат DateTime в ASP.NET MVC 3

[Display(Name = "Date of birth")] 
[DisplayFormat(DataFormatString = "{0:dd.MM.yyyy}", ApplyFormatInEditMode = true)] 
[DataType(DataType.Date, ErrorMessage = "Enter correct date (e.g. 23.05.1980)")] 
public DateTime CustomerBirthday { get; set; } 

Все в порядке с отображением. Но когда я хочу отправить форму, она не проходит проверку, если первое число больше 12, поскольку оно ожидает дату в формате MM.dd.yyyy, а не dd.MM.yyyy. Как я могу заставить связующее устройство использовать шаблон DateTime (dd.MM.yyyy) и игнорировать настройки культуры.

ответ

1

Как я могу заставить модель связующий использовать мой DateTime шаблон (дд.мм.гггг) и игнорировать настройки культуры.

Вы можете написать собственную модель связующие, который будет принимать во внимание формат, указанный в атрибуте DisplayFormat: https://stackoverflow.com/a/7836093/29407

1

DefaultModelBinder использует параметры культуры сервера для данных формы. Поэтому я могу сказать, что сервер использует культуру «en-US», но с другим форматом даты.

Вы можете сделать что-то подобное в Application_BeginRequest, и все готово!

protected void Application_BeginRequest() 
{ 
    CultureInfo info = new CultureInfo(System.Threading.Thread.CurrentThread.CurrentCulture.ToString()); 
    info.DateTimeFormat.ShortDatePattern = "dd.MM.yyyy"; 
    System.Threading.Thread.CurrentThread.CurrentCulture = info; 
} 
Смежные вопросы