У меня проблемы с отображением единственной части даты DateTime в текстовое поле с использованием TextBoxFor <,> (expression, htmlAttributes).
Модель основана на Linq2SQL, поле - это DateTime для SQL и в модели Entity.
Не смогли:
<%= Html.TextBoxFor(model => model.dtArrivalDate, String.Format("{0:dd/MM/yyyy}", Model.dtArrivalDate))%>
Этот трюк кажется устаревшим, любое строковое значение в объекте htmlAttribute игнорируется.
Не смогли:
[DisplayFormat( DataFormatString = "{0:dd/MM/yyyy}" )]
public string dtArrivalDate { get; set; }
Я хотел бы сохранить и отобразить только часть даты в представлении подробностей / редактирования без части "00:00:00".
asp.net-mvc
Kronos
источник
источник
@Html.EditorFor(m => m.IssueDate)
а форматирование модели применяется как,[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}" )]
но дата по-прежнему отображается как01/01/0001 12:00:00 AM
MVC4 решил эту проблему, добавив новую
TextBoxFor
перегрузку, которая принимает параметр формата строки. Теперь вы можете просто сделать это:Также есть перегрузка, которая принимает атрибуты html, так что вы можете установить класс CSS, подключить указатели даты и т. Д .:
источник
@Html.TextBoxFor(m => m.SomeDate, "{0:MM/dd/yyyy}", new { @id="datepicker" })
[DisplayFormat]
атрибут модели . Рад, что в TextBoxFor есть хотя бы переопределение (и вы предупредили меня об этом).@Html.TextBoxFor(model => model.CDate, "{0:dd.MM.yyyy}")
но на httpPost я получаю данные типа MM.dd.yyyy. Как это решить?input[type=date]
спецификации требуют"{0:yyyy-MM-dd}"
форматирования.источник
@Value = (Model.DateBecamePermanentResident == null ? "" : Model.DateBecamePermanentResident.Value.ToString("dd.MM.yyyy"))
Или используйте нетипизированные помощники:
источник
@Html.TextBoxFor(model => model.EndDate, "{0:d}", new { type = "date" })
Это сработало для меня.
источник
Не бойтесь использовать сырой HTML.
источник
TextBoxFor
илиEditorFor
отформатировать значение в любом случае. См. Мой вопрос: TextBox для помощника смешивает день и месяц в датахTL; DR;
Подача заявления
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:yyyy-MM-dd}")]
не сработала для меня!Объяснение:
Для отображения свойства даты вашей модели используйте
Html.TextBoxFor
:Свойство Date вашего модельного класса:
На стороне модели больше ничего не нужно.
В Razor вы делаете:
Объяснение:
Дата html-
input
элемента типаdate
должна быть отформатирована в соответствии с ISO8601 , а именно:yyyy-MM-dd
По моему опыту, язык определяется не
Accept-Language
заголовком, а языком отображения браузера или языком системы ОС.источник
Вы также можете использовать атрибуты HTML 5, применив эту аннотацию данных:
Но проблема в том, что этот браузер позволяет выбирать даты для браузеров HTML 5. Вам все еще нужен свой собственный инструмент выбора даты для браузеров без поддержки, а затем вы должны убедиться, что ваш инструмент выбора даты не отображается в дополнение к браузеру (Modernizr может сделать это легко), или скрыть браузер, если он появляется (сложно и я не знаю, насколько надежными были методы, которые я видел).
В конце концов, я пошел с Алексом, потому что в моей нынешней среде нет Modernizr, но если бы он был, я бы использовал его, чтобы условно показать только средство выбора данных, если бы браузер уже не поддерживал его.
источник
Для меня, мне нужно было сохранить,
TextboxFor()
потому что при использованииEditorFor()
меняет тип ввода на сегодняшний день. Который в Chrome добавляет встроенный инструмент выбора даты, который испортил jQuery datepicker, который я уже использовал. Итак, чтобы продолжить использоватьTextboxFor()
AND только для вывода даты, вы можете сделать это:источник
Атрибут DisplayFormat не работал для меня ни в одной форме при начальной загрузке. Вместо этого я создал EditorTemplate:
источник
Редактор шаблонов будет работать только для отображения. Если вы используете тот же редактор (который имеет смысл, потому что это редактор), и вы указали значение, например 31.01.2010 - вы получите сообщение об ошибке, в котором говорится, что формат недействителен.
источник
Я использую Globalize, поэтому работаю со многими форматами даты, поэтому используйте следующее:
Это автоматически настроит формат даты в соответствии с настройками локали браузера.
источник
Имейте в виду, что показ будет зависеть от культуры. И хотя в большинстве случаев все остальные ответы верны, у меня это не сработало. Проблема с культурой также вызовет различные проблемы с jQuery datepicker, если он прикреплен.
Если вы хотите принудительно изменить формат
/
следующим образом:Если не сбежал для меня, это шоу
08-01-2010
против ожидаемого08/01/2010
.Также, если не удалось избежать, jQuery datepicker выберет другую defaultDate, в моем случае это было
May 10, 2012
.источник
Если вы используете средство выбора даты Bootstrap, вы можете просто добавить атрибут data_date_format, как показано ниже.
источник
// время отображения даты в DatePicker - 24.11.2011, 12:00:00
// Вы можете разделить это на пробел и установить значение только на дату
Автор сценария:
Разметка:
Надеется, что это помогает ..
источник
Конечно, вы можете использовать Html.EditorFor. Но если вы хотите использовать TextBoxFor и использовать формат из атрибута DisplayFormat, вы можете использовать его следующим образом:
или создайте следующее расширение:
источник
Просто добавьте рядом с вашей моделью.
источник
При использовании помощников тегов в ASP.NET Core необходимо указывать формат в формате ISO. Если не указано иное, связанные входные данные не будут отображаться должным образом и будут отображаться как мм / дд / гггг без значения.
Модель:
Посмотреть:
Формат также можно указать в представлении с помощью атрибута asp-format.
Результирующий HTML будет выглядеть следующим образом:
источник
Вы можете использовать приведенный ниже код для печати времени в формате ЧЧ: мм. В моем случае тип свойства - TimeSpan. Таким образом, значение приходит в формате ЧЧ: мм: tt, но я должен показать его в вышеуказанном формате, т.е. HH: мм
источник
Если вы настаиваете на использовании
[DisplayFormat]
, но не используете MVC4, вы можете использовать это:источник