2013-09-10 4 views
3

Я пытаюсь получить аннотации конкретных конкретных культур.Аннотации к конкретным конкретным данным

[DisplayFormat(DataFormatString = "{0:d}")] 
public DateTime Date{ get; set; } 

Я думал, что это сработает. Таким образом, в нас он будет показывать DD/MM/yyyy, а в Европе он будет показывать MM/DD/YYYY.

Чтобы проверить это, я установил свой хромированный язык по умолчанию на английский (Великобритания) и перезапустил браузер.

Я все еще получаю формат США, что заставляет меня поверить, что DataFormatString не уважает культуры.

Как это исправить? Могу ли я также сократить год, так что это просто «yy» вместо «yyyy»?

ответ

3

Этот формат является специфическим для культуры. Вы, должно быть, делаете что-то неправильно.

  1. Создать новое приложение ASP.NET MVC, используя шаблон по умолчанию
  2. Добавить вид модели:

    public class MyViewModel 
    { 
        [DisplayFormat(DataFormatString = "{0:d}")] 
        public DateTime Date { get; set; } 
    } 
    
  3. Контроллер:

    public class HomeController : Controller 
    { 
        public ActionResult Index() 
        { 
         return View(new MyViewModel 
         { 
          Date = DateTime.Now, 
         }); 
        } 
    } 
    
  4. И вид:

    @using MvcApplication1.Models 
    @model MyViewModel 
    
    @Html.DisplayFor(x => x.Date) 
    

Теперь заставить культуру в вашем web.config в какой-то конкретной культуре:

<system.web> 
    <globalization culture="fr-FR"/> 
    ... 
</system.web> 

enter image description here

Поэтому убедитесь, что вы установили культуру авто в этом случае:

<system.web> 
    <globalization culture="auto"/> 
    ... 
</system.web> 

Тогда браузер отправит надлежащее сообщениезапрос заголовок, который выглядит следующим образом:

enter image description here

и, очевидно, результат будет отформатирован как ожидалось:

enter image description here

+0

У меня не было моей культуры = «авто», установленной в файле web.config. Благодаря! – Nate

2

Вы на самом деле установить текущую культуру, рамки MVC Безразлично» t установить его автоматически (помните, что язык страницы может зависеть от таких факторов, как URL, а не только настроек браузера.

Чтобы установить культуру, используйте Thread.CurrentThread.CurrentCulture и Thread.CurrentThread.CurrentUICulture. Вы можете получить настройки браузера от HttpRequest.UserLanguages (имейте в виду, что это значение именно то, что приходит через HTTP-запрос).

Редактировать

Per this answer, кажется, что является способ проинструктировать ASP.Сеть, чтобы установить язык на основе заголовка HTTP-запроса (установить web.config globalization -> «культура» и «uiCulture» на «авто»).

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