2013-08-17 3 views
47

Можно ли отобразить значение DateTime в дд/мм/гггг с помощью HTML Hepler методов в Asp.NET MVC? Я попытался сделать это, используя некоторые форматы в @Html.LabelFor и добавив некоторые аннотации к соответствующему свойству, как показано ниже, но это не имеет никакого смысла. Любая помощь для решения этой проблемы будет оценена по достоинству.дисплей значение DateTime в формате дд/мм/гггг в asp.net MVC

Модель:

[DataType(DataType.Date)] 
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)] 
public Nullable<System.DateTime> RegistrationDate { get; set; } 

ответ

66

Все, что вам нужно сделать, это формат типа вы хотите в HTML помощника. то есть.

@Html.TextBoxFor(m => m.ResgistrationhaseDate, "{0:dd/MM/yyyy}") 

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

+7

И если вы обеспокоены региональным форматированием, вы можете попробовать '{0: d}' – frictionlesspulley

+1

, это будет означать, что это будет google chrome, если вы запустите страницу в IE-окнах, вы не увидите выбор даты – SAR

+0

Работает с jquery datepicker, спасибо. – Muflix

43

После нескольких часов поисков, я просто решить эту проблему с помощью нескольких строк кода

Ваша модель

 [Required(ErrorMessage = "Enter the issued date.")] 
     [DataType(DataType.Date)] 
     public DateTime IssueDate { get; set; } 

Razor Page

 @Html.TextBoxFor(model => model.IssueDate) 
    @Html.ValidationMessageFor(model => model.IssueDate) 

Jquery DatePicker

<script type="text/javascript"> 
    $(document).ready(function() { 
     $('#IssueDate').datepicker({ 
      dateFormat: "dd/mm/yy", 
      showStatus: true, 
      showWeeks: true, 
      currentText: 'Now', 
      autoSize: true, 
      gotoCurrent: true, 
      showAnim: 'blind', 
      highlightWeek: true 
     }); 
    }); 
</script> 

WebConfig Файл

<system.web> 
     <globalization uiCulture="en" culture="en-GB"/> 
    </system.web> 

Теперь текст-бокс будет принимать формат "дд/мм/гггг".

+1

спасибо mate, я делал все, кроме вещи web.config, но когда я добавил вашу строку web.config в мой, это сработало отлично –

+2

Я пробовал все, что вы сказали, но он продолжает терпеть неудачу в одной точке. Я предполагаю, что у вас нет ненавязчивого jquery, потому что, если у вас есть, он вызывает ошибки проверки, говорящие, что поле не является допустимой датой (попробуйте дату 31/01/2014, bcb, январь 31.) Попробуйте это и скажите мне, есть ли у вас такая же проблема. Thnks – Yogurtu

+0

Я просто добавил раздел WebConfig достаточно, чтобы обойти его - Помощники MVC5 позволяют вам указать формат для даты, поэтому видимый показ не является проблемой - я застрял со скрытым полем, в котором была дата AU/GB он – Rob

7

Я знаю, что это старая проблема, но для справки, очень простой способ для форматирования даты без каких-либо аннотаций данных или каких-либо других параметров выглядит следующим образом:

@Html.TextBoxFor(m => m.StartDate, new { @Value = Model.StartDate.ToString("dd-MMM-yyyy") }) 

выше формат, конечно, может быть изменен на что угодно.

2

Вам нужно использовать хелпер html, и вам не нужно указывать формат даты в классе модели. e.x:

@Html.TextBoxFor(m => m.ResgistrationhaseDate, "{0:dd/MM/yyyy}") 
3

Поскольку вопрос был "дисплей":

@ Html.ValueFor (модель => модель.RegistrationDate, "{0: дд/ММ/ГГГГ}")

3

Или просто использовать это в View (Razor страница)

@item.ResgistrationhaseDate.ToString(string.Format("dd/MM/yyyy")) 

Я рекомендую не добавлять формат даты в вашей модели class

+0

Недооцененное решение – Eduard