2016-12-28 1 views
1

Я использую аннотацию данных в своей модели для выбора даты.DatePicker с аннотацией данных в mvc

Модель:

[DataType(DataType.Date)] 
    public DateTime DueDate { get; set; } 

Вид:

<div class="form-group"> 
     @Html.LabelFor(model => model.DueDate, htmlAttributes: new { @class = "control-label col-md-2" }) 
     <div class="col-md-10"> 
      @Html.EditorFor(model => model.DueDate, new { htmlAttributes = new { @class = "form-control" } }) 
      @Html.ValidationMessageFor(model => model.DueDate, "", new { @class = "text-danger" }) 
     </div> 
    </div> 

В первый раз, когда я добавляю дату в базе данных она показывает мне календарь (без времени). enter image description here

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

А также имеет валидацию для формата. Когда я добавляю дату, это dd/mm/yyyy, и когда я делаю изменения, он проверяет только yyyy/mm/dd. Как я могу его изменить?

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

+0

Попробуйте '@ Html.EditorFor (model => model.DueDate.ToString (" dd/MM/yyyy "), new {htmlAttributes = new {@class =" form-control "}})'. Проблема в том, что вы возвращаете сохраненную дату. Если он не спасен, он работает как шарм. Просто установите формат даты, когда вы его показываете. –

+0

Я рекомендую вам использовать bootstrap datepicker вместо конкретного сборщика браузера. Потому что, когда вы открываете свой веб-сайт в Internet Explorer, вы не сможете увидеть этот выбор даты. Вот ссылка bootstrap datepicker. https://bootstrap-datepicker.readthedocs.io/en/latest/ – Saadi

+0

вы также можете указать свой формат даты во время запуска бутстрапа datepicker. – Saadi

ответ

0

я столкнулся с той же проблемой, и я решил ее поставить скрипт проверки для проверки браузера (Chrome от Google работает отлично и не нуждается в этом)

var isChrome = /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor); 

    if (!isChrome) { 
     $(document).ready(function() { 
      $("#IdOfDivThatYouNedd").datepicker(); 
     }); 
    } 

Для проверки вы можете использовать этот dataanotation:

[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:MM/dd/yyyy}")] [DataType(DataType.Date, ErrorMessage = "date is not a corret format")]