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; }