Asp mvc EditorFor DateTime не отображается

Я пытаюсь отобразить поле datetime, полученное из базы данных в моем файле бритвы, со следующим:

 @Html.EditorFor(model => model.RequestDate);

Я знаю со 100% уверенностью, что RequestDate не является нулевым, поскольку я изучил модель, которая была передана в представлении, и это была дата из базы данных. Однако текстовое поле datetime по-прежнему отображает "мм/дд/гггг". Я не знаю, почему он не отображает дату. Есть идеи? Спасибо.

Вот моя модель:

      [Display(Name = "Time")]
    [DataType(DataType.Date)]
    public DateTime RequestDate { get; set; }

EDIT:

   [HttpGet]
    public ActionResult DispatchResponseIndex()
    {
        DispatchResponseModel model = new DispatchResponseModel();       


        //if the users session id isnt null then we know they have data related to this form
        object UserID = Session["TestID"];
        if (UserID == null)
        {
            return View(model); //default view               
        }
        else
        {
            UserID = Session["TestID"];
        }

        LoadDB(model, (Guid)UserID);
     //looking at the model here the RequestDate has a valid date of  //{5/24/2013 12:00:00 AM}

        return View(model); 
    }

ИЗМЕНИТЬ 2:

Если я использую @Html.TextBox( "asdasd", Model.RequestDate); Затем он отобразит сохраненную дату в строчном формате, но мне нужно использовать встроенный редактор даты для текстового поля.

Ответ 1

Это, кажется, вызывает много путаницы, и это раздражало меня!

Если вы используете DataType.Date, вам нужно установить его следующим образом:

[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]

Chrome Date Picker использует формат короткой даты на локальном компьютере. Даже установка тега lang игнорируется; Вот пример использования Chrome и <html lang="en-GB">:

enter image description here

Chrome Date Picker также использует локаль локального компьютера. При загрузке страницы дата будет заполнена (если установлена), и пользователь может выбрать новую дату:

enter image description here

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

Ответ 2

FINAL

Я идиот. Я понятия не имел, что у Chrome был сборщик дат, который он добавил. Я думал, что это что-то встроенное в MVC. Мне нужно использовать фактический выбор даты jquery. Спасибо всем за всю информацию.

Ответ 3

Добавить строку формата в вашей модели

[Display(Name = "Time")]        
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:MM/dd/yyyy}")]
[DataType(DataType.Date)]
public DateTime RequestDate { get; set; }

Обновление

ИЛИ

Можете ли вы изменить свойство модели datetime на строку. и конвертировать ваш объект datetime в строку!!

ИЛИ

Или вы можете отформатировать это значение в своем поле редактора. для примера, например

@Html.TextBoxFor(model => model.FromDate, "{0:d}")

Ответ 4

На самом деле, пока я не увидел этот пост, я не понимал, что разница между "Chrome" и "IE" отличается от "выбора даты", хотя я получил образец макета страницы из учебника MVC.

Для тех, кто не понимает разницы, как я это делал раньше, сравните сравнение:

enter image description here

Ответ 5

У меня была такая же проблема. Если вы посмотрите HTTP-сообщение, которое возвращалось к контроллеру и формат даты в POST, это yyyy-MM-dd.

Я изменил аннотацию данных к этому, и это сработало... За исключением того, что в настоящее время в списке индексов показан формат yyyy-mm-dd. И Edit показывает mm/mm/yyyy в элементе управления datepicker?

Добавлен в дату модели -

[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:yyyy-MM-dd}")

ИМХО КАЖДОЕ приложение, которое я видел с 1980 года, использовало даты и время. Почему это все еще беспорядок? MS?

Ответ 6

Вот как я делаю это внутри модели

[Display(Name = "Effective Date")]
    [DataType(DataType.Date)]
    [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd-MMM-yyyy}")]
    public DateTime? Effectivedate 
    {
        get { return EffectivedateEdit; }
        set { EffectivedateEdit = value; EffectivedateEdit = value; } 
    }


    [DataType(DataType.Date)]
    [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:yyyy-MM-dd}")]
    public DateTime? EffectivedateEdit { get; set; }